Django 1.8.3在创建数据库时运行测试失败

时间:2015-12-15 18:21:08

标签: python django database testing django-1.8

我正在尝试运行“manage.py test”但是我收到以下错误消息:

(env)user@comp:~/Documents/repo/cloud/webapp$ python manage.py test
Creating test database for alias 'default'...
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/user/.virtualenvs/env/local/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 "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/core/management/base.py", line 393, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 74, in execute
    super(Command, self).execute(*args, **options)
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/core/management/base.py", line 444, in execute
    output = self.handle(*args, **options)
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 90, in handle
    failures = test_runner.run_tests(test_labels)
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/test/runner.py", line 210, in run_tests
    old_config = self.setup_databases()
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/test/runner.py", line 166, in setup_databases
    **kwargs
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/test/runner.py", line 370, in setup_databases
    serialize=connection.settings_dict.get("TEST", {}).get("SERIALIZE", True),
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/db/backends/base/creation.py", line 368, in create_test_db
    test_flush=not keepdb,
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 120, in call_command
    return command.execute(*args, **defaults)
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/core/management/base.py", line 444, in execute
    output = self.handle(*args, **options)
  File "/home/user/.virtualenvs/env/local/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 "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 317, in sync_apps
    cursor.execute(statement)
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/db/utils.py", line 97, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/user/.virtualenvs/env/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 62, in execute
    return self.cursor.execute(sql)
django.db.utils.ProgrammingError: relation "auth_user" does not exist

我有自定义用户模型。我已经读过这个问题,因为Django在迁移auth之前迁移你的应用程序会导致错误,因为自定义用户模型引用了auth.user模型。但是我没有找到解决方法。

2 个答案:

答案 0 :(得分:1)

您在没有迁移的应用中有一个模型,其中包含Array.Resize的外键。如the docs中所述:

  

但是,请注意,未迁移的应用程序不能依赖迁移的应用程序,这是因为没有迁移。这意味着通常不可能让未迁移的应用程序具有到迁移的应用程序的ForeignKey或ManyToManyField;有些情况可能有效,但最终会失败。

您必须使用外键为用户模型添加应用迁移。

答案 1 :(得分:0)

首先尝试执行以下命令:

$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py syncdb

如果您在models.py中对模型定义进行了任何更改,则必须运行SQL迁移查询以将数据库移动到新模型。