gpt4 book ai didi

python - Django 没有正确创建测试数据库

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:18 27 4
gpt4 key购买 nike

我正在使用以下数据库设置

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(_DB_DIR, 'dev.db'),
'TEST_NAME': os.path.join(_DB_DIR, 'dev_test.db'),
}
}

但是,每次我运行 python manage.py test它坏了。问题似乎出在测试数据库上。由于某种原因,标准数据库中的相同表没有在那里创建。该命令返回 django.db.utils.DatabaseError: no such table: tbforms_userprofile 。事实上,当我使用 sqlite3 打开 dev_test.db 时,可能会看到指定的表(以及 tbforms 应用程序中的任何其他表)不存在。

我错过了什么?我正在使用 Django 1.4 和 Sqlite

PS:值得注意的是,syncdb 和 migrate 运行顺利。完整的回溯可在此处获得:http://pastebin.com/9dVmuVyt

最佳答案

正如我们所讨论的,这里的问题是用户模型(在syncdb期间创建)有一个保存后信号来创建Profile模型(在syncdb之后,在south的迁移中创建)。因此,当syncdb(或您的测试)在新数据库上创建表并创建新用户时,用户配置文件的表尚未创建,并且会引发此错误。

解决方案:

  • 避免在创建用户时自动创建此配置文件(不好闻)
  • 使用 Django 1.5 及其自定义用户模型支持
  • 禁用 South 进行测试 (SOUTH_TESTS_MIGRATE = False),并始终创建指定syncdb --all 的新数据库,然后进行 migrate --fake。 (但这不是最好的解决方案)

关于python - Django 没有正确创建测试数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18050862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com