#27751: Teardown of a PG test database fails if it is an autogenerated test_MYDB database -----------------------------------+------------------------------------ Reporter: Cynthia Kiser | Owner: nobody Type: Bug | Status: new Component: Testing framework | Version: 1.9 Severity: Normal | Resolution: Keywords: database, testing | Triage Stage: Accepted Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 -----------------------------------+------------------------------------
Comment (by Marek Onuszko): I'm getting the same error. Debian Linux 8.0 (Jessie) Python 3.4.2 (python --version) Django 1.10.5 (installed in virtualenv via pip) psycopg2 2.7.1 (installed in virtualenv via pip) {{{ dpkg -l | grep postgres ii postgresql 9.4+165+deb8u2 all object-relational SQL database (supported version) ii postgresql-9.4 9.4.10-0+deb8u1 amd64 object-relational SQL database, version 9.4 server ii postgresql-client-9.4 9.4.10-0+deb8u1 amd64 front-end programs for PostgreSQL 9.4 ii postgresql-client-common 165+deb8u2 all manager for multiple PostgreSQL client versions ii postgresql-common 165+deb8u2 all PostgreSQL database-cluster manager ii postgresql-server-dev-9.4 9.4.10-0+deb8u1 amd64 development files for PostgreSQL 9.4 server-side programming }}} Setting up database was like this: {{{ CREATE ROLE kartyuser LOGIN PASSWORD 'somepassword'; ALTER ROLE kartyuser CREATEDB; CREATE DATABASE kartydb; ALTER ROLE kartyuser SET client_encoding TO 'utf8'; ALTER ROLE kartyuser SET default_transaction_isolation TO 'read committed'; ALTER ROLE kartyuser SET timezone TO 'UTC'; GRANT ALL PRIVILEGES ON DATABASE kartydb TO kartyuser; }}} pg_hba.conf: {{{ # "local" is for Unix domain socket connections only local all all peer host kartydb kartyuser 10.7.90.5/24 md5 host test_kartydb kartyuser 10.7.90.5/24 md5 # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 }}} settings.py: {{{ DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'kartydb', 'USER': 'kartyuser', 'PASSWORD': 'somepassword', 'HOST': '10.7.90.5', 'PORT': '5432', } } }}} runtests.sh: {{{ coverage run manage.py test karty.tests coverage report }}} Traceback: {{{ /home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/db/backends/postgresql/base.py:248: RuntimeWarning: Normally Django will use a connection to the 'postgres' database to avoid running initialization queries against the production database when it's not needed (for example, when running tests). Django was unable to create a connection to the 'postgres' database and will use the default database instead. RuntimeWarning Got an error creating the test database: database "test_kartydb" already exists Type 'yes' if you would like to try deleting the test database 'test_kartydb', or 'no' to cancel: yes Destroying old test database for alias 'default'... .......................... ---------------------------------------------------------------------- Ran 26 tests in 4.090s OK Destroying test database for alias 'default'... /home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/db/backends/postgresql/base.py:248: RuntimeWarning: Normally Django will use a connection to the 'postgres' database to avoid running initialization queries against the production database when it's not needed (for example, when running tests). Django was unable to create a connection to the 'postgres' database and will use the default database instead. RuntimeWarning Traceback (most recent call last): File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/db/backends/utils.py", line 62, in execute return self.cursor.execute(sql) psycopg2.OperationalError: cannot drop the currently open database The above exception was the direct cause of the following exception: Traceback (most recent call last): File "manage.py", line 22, in <module> execute_from_command_line(sys.argv) File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/core/management/__init__.py", line 367, in execute_from_command_line utility.execute() File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/core/management/__init__.py", line 359, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/core/management/commands/test.py", line 29, in run_from_argv super(Command, self).run_from_argv(argv) File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/core/management/base.py", line 294, in run_from_argv self.execute(*args, **cmd_options) File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/core/management/base.py", line 345, in execute output = self.handle(*args, **options) File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/core/management/commands/test.py", line 72, in handle failures = test_runner.run_tests(test_labels) File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/test/runner.py", line 551, in run_tests self.teardown_databases(old_config) File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/test/runner.py", line 526, in teardown_databases connection.creation.destroy_test_db(old_name, self.verbosity, self.keepdb) File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/db/backends/base/creation.py", line 264, in destroy_test_db self._destroy_test_db(test_database_name, verbosity) File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/db/backends/base/creation.py", line 283, in _destroy_test_db % self.connection.ops.quote_name(test_database_name)) File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/db/backends/utils.py", line 64, in execute return self.cursor.execute(sql, params) File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/db/utils.py", line 94, in __exit__ six.reraise(dj_exc_type, dj_exc_value, traceback) File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/utils/six.py", line 685, in reraise raise value.with_traceback(tb) File "/home/monuszko/warsztat/ENV/karty/lib/python3.4/site- packages/django/db/backends/utils.py", line 62, in execute return self.cursor.execute(sql) django.db.utils.OperationalError: cannot drop the currently open database Name Stmts Miss Branch BrPart Cover ----------------------------------------------------------------------------------- karty/admin.py 10 0 0 0 100% karty/apps.py 3 0 0 0 100% karty/factories.py 35 0 4 0 100% karty/management/commands/create_sample_data.py 18 0 4 0 100% karty/management/commands/destroy_app_data.py 7 0 0 0 100% karty/models.py 44 1 4 0 98% karty/serializers.py 11 0 0 0 100% karty/urls.py 4 0 0 0 100% karty/views.py 53 2 8 1 95% ----------------------------------------------------------------------------------- TOTAL 185 3 20 1 98% }}} -- Ticket URL: <https://code.djangoproject.com/ticket/27751#comment:11> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/061.eea50992857de81b4793228ed50d3911%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.