我正在使用以下数据库设置
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应用程序中的任何其他表)不存在。
我错过了什么?我正在使用带有Sqlite的Django 1.4
PS:重要的是要注意syncdb和迁移运行顺利。完整的追溯可在此处获得:http://pastebin.com/9dVmuVyt
答案 0 :(得分:1)
正如我们已经讨论过的,这里的问题是用户模型(在syncdb期间创建)有一个保存后信号来创建一个Profile模型(在南方迁移后的syncdb之后创建)。因此,当syncdb(或您的测试)在新数据库上创建表并创建新用户时,尚未创建用户配置文件的表,并且会引发此错误。
<强>解决方案:强>