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

2024-10-01 15:38:23 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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。事实上,当我打开dev_测试数据库使用sqlite3可以看到指定的表(以及tbforms应用程序中的任何其他表)不存在。在

我错过了什么?我在Sqlite中使用django1.4

PS:需要注意的是syncdb和migrate运行得很顺利。完整的回溯可以在这里找到:http://pastebin.com/9dVmuVyt


Tags: pathdjangonamedevtest数据库defaultdb
1条回答
网友
1楼 · 发布于 2024-10-01 15:38:23

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

解决方案:

  • 避免在用户创建时自动创建此配置文件(这是一种不好的气味)
  • 使用django1.5及其自定义用户模型支持
  • 为测试禁用south(south_tests_MIGRATE=False),并始终创建指定syncdb的新数据库,然后迁移fake。(不过,这不是最好的解决方案)

相关问题 更多 >

    热门问题