python - "django.db.utils.ProgrammingError: relation "app_user" does not exist" during manage.py test -
my setup:
- django 1.8.3
- python 2.7.10
- ubuntu 14.04
- django-two-factor-auth==1.2.0
i following error when run python manage.py test:
traceback (most recent call last): file "/src/venv/bin/django-admin.py", line 5, in <module> management.execute_from_command_line() file "/src/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line utility.execute() file "/src/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute self.fetch_command(subcommand).run_from_argv(self.argv) file "/src/venv/lib/python2.7/site-packages/django/core/management/commands/test.py", line 30, in run_from_argv super(command, self).run_from_argv(argv) file "/src/venv/lib/python2.7/site-packages/django/core/management/base.py", line 393, in run_from_argv self.execute(*args, **cmd_options) file "/src/venv/lib/python2.7/site-packages/django/core/management/commands/test.py", line 74, in execute super(command, self).execute(*args, **options) file "/src/venv/lib/python2.7/site-packages/django/core/management/base.py", line 444, in execute output = self.handle(*args, **options) file "/src/venv/lib/python2.7/site-packages/django/core/management/commands/test.py", line 90, in handle failures = test_runner.run_tests(test_labels) file "/src/venv/lib/python2.7/site-packages/django/test/runner.py", line 210, in run_tests old_config = self.setup_databases() file "/src/venv/lib/python2.7/site-packages/django/test/runner.py", line 166, in setup_databases **kwargs file "/src/venv/lib/python2.7/site-packages/django/test/runner.py", line 370, in setup_databases serialize=connection.settings_dict.get("test", {}).get("serialize", true), file "/src/venv/lib/python2.7/site-packages/django/db/backends/base/creation.py", line 368, in create_test_db test_flush=not keepdb, file "/src/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 120, in call_command return command.execute(*args, **defaults) file "/src/venv/lib/python2.7/site-packages/django/core/management/base.py", line 444, in execute output = self.handle(*args, **options) file "/src/venv/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 179, in handle created_models = self.sync_apps(connection, executor.loader.unmigrated_apps) file "/src/venv/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 317, in sync_apps cursor.execute(statement) file "/src/venv/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute return self.cursor.execute(sql, params) file "/src/venv/lib/python2.7/site-packages/django/db/utils.py", line 97, in __exit__ six.reraise(dj_exc_type, dj_exc_value, traceback) file "/src/venv/lib/python2.7/site-packages/django/db/backends/utils.py", line 63, in execute return self.cursor.execute(sql) django.db.utils.programmingerror: relation "app_user" not exist when drop print(sql) statement on line 62 in django/db/backends/utils.py, following output:
create database "test_dev" select c.relname, c.relkind pg_catalog.pg_class c left join pg_catalog.pg_namespace n on n.oid = c.relnamespace c.relkind in ('r', 'v') , n.nspname not in ('pg_catalog', 'pg_toast') , pg_catalog.pg_table_is_visible(c.oid) create table "django_migrations" ("id" serial not null primary key, "app" varchar(255) not null, "name" varchar(255) not null, "applied" timestamp time zone not null) select c.relname, c.relkind pg_catalog.pg_class c left join pg_catalog.pg_namespace n on n.oid = c.relnamespace c.relkind in ('r', 'v') , n.nspname not in ('pg_catalog', 'pg_toast') , pg_catalog.pg_table_is_visible(c.oid) savepoint "s140275211773760_x1" create table "distributedlock_lock" ("id" serial not null primary key, "key" varchar(255) not null, "value" varchar(255) not null, "timestamp" timestamp time zone null) release savepoint "s140275211773760_x1" savepoint "s140275211773760_x2" create table "djkombu_queue" ("id" serial not null primary key, "name" varchar(200) not null unique) release savepoint "s140275211773760_x2" savepoint "s140275211773760_x3" create table "djkombu_message" ("id" serial not null primary key, "visible" boolean not null, "sent_at" timestamp time zone null, "payload" text not null, "queue_id" integer not null) release savepoint "s140275211773760_x3" savepoint "s140275211773760_x4" create table "otp_static_staticdevice" ("id" serial not null primary key, "user_id" integer not null, "name" varchar(64) not null, "confirmed" boolean not null) release savepoint "s140275211773760_x4" savepoint "s140275211773760_x5" create table "otp_static_statictoken" ("id" serial not null primary key, "device_id" integer not null, "token" varchar(16) not null) release savepoint "s140275211773760_x5" savepoint "s140275211773760_x6" create table "otp_totp_totpdevice" ("id" serial not null primary key, "user_id" integer not null, "name" varchar(64) not null, "confirmed" boolean not null, "key" varchar(80) not null, "step" smallint not null check ("step" >= 0), "t0" bigint not null, "digits" smallint not null check ("digits" >= 0), "tolerance" smallint not null check ("tolerance" >= 0), "drift" smallint not null, "last_t" bigint not null) release savepoint "s140275211773760_x6" create index "djkombu_queue_name_1c24e49fd475ad53_like" on "djkombu_queue" ("name" varchar_pattern_ops) alter table "djkombu_message" add constraint "djkombu_message_queue_id_12778caea7843dd_fk_djkombu_queue_id" foreign key ("queue_id") references "djkombu_queue" ("id") deferrable deferred create index "djkombu_message_46cf0e59" on "djkombu_message" ("visible") create index "djkombu_message_df2f2974" on "djkombu_message" ("sent_at") create index "djkombu_message_75249aa1" on "djkombu_message" ("queue_id") alter table "otp_static_staticdevice" add constraint "otp_static_staticdevice_user_id_39a61f1bd3ec970d_fk_app_user_id" foreign key ("user_id") references "ff_user" ("id") deferrable deferred so clear me tests blow while test database being setup. specifically, attempt create foreign key constraint between otp_static_staticdevice table , app's app_user table fails.
my immediate question is, why django create otp table before app's table? assumption otp app listed first in installed_apps. not case:
installed_apps = [ 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'django.contrib.humanize', 'app', ... 'django_otp', 'django_otp.plugins.otp_static', 'django_otp.plugins.otp_totp', 'two_factor', ... ] next, @ django/core/management/commands/migrate.py, trying find out how django determines order migrating apps.
plopping pdb.set_trace() statement on line 264 (https://github.com/django/django/blob/1.8.3/django/core/management/commands/migrate.py#l264) , looking see app_labels contains, get:
set(['djangosaml2', 'django_ace', 'recurly', 'staticfiles', 'distributedlock', 'app_overrides', 'messages', 'django_otp', 'kombu_transport_django', 'otp_totp', 'compressor', 'otp_static', 'humanize', 'ajax_select', 'django_extensions', 'import_export', 'raven_compat', 'crispy_forms', 'emoji']) this far have gotten before decided ask help. know how django might end not creating project's apps in correct order decency conflicts not occur?
got same issue, , since happens on ./manage.py test, migrations may broken.
since django 1.7, there new setting called migration_modules, in configure app's migration modules.
adding following workaround in settings.py (found here) skips migrations on tests, , solved me:
class disablemigrations(object): def __contains__(self, item): return true def __getitem__(self, item): return "notmigrations" migration_modules = disablemigrations()
Comments
Post a Comment