【发布时间】:2012-01-15 01:30:42
【问题描述】:
我现在不知道为什么,但是当我尝试运行测试时,从一天到另一天开始出现问题。 我正在使用 django 1.1(客户要求),当我运行测试时:
python manage.py test --setting=settingsTest
它抛出:
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "/usr/lib/pymodules/python2.6/django/core/management/__init__.py", line 362, in execute_manager
...
File "/usr/lib/pymodules/python2.6/django/db/backends/sqlite3/base.py", line 193, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such table: programas_act_actividadesprograma
但我在 settingsTest.py 中有
INSTALLED_APPS = (
'django.contrib.auth',
...
'site.programas_act',
...
)
在 /var/www/site/programas_act/models.py 中
class ActividadesPrograma(models.Model):
...
我删除了 settingsTest.DATABASE_NAME 中命名的文件并运行:
python manage.py syncdb --setting=settingsTest
但仍然失败。
如果我在 django shell_plus 中运行:
import settings
print settings.INSTALLED_APPS
for app in settings.INSTALLED_APPS:
print app
我可以看到应用程序,但是当我运行时:
from django.db import connection
cursor = connection.cursor()
qry="""SELECT name FROM sqlite_master
WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%%'
UNION ALL
SELECT name FROM sqlite_temp_master
WHERE type IN ('table','view')
ORDER BY 1"""
cursor.execute(qry)
results = cursor.fetchall()
for tablename in results:
print tablename
我找不到那个表名。
谁能帮帮我?
谢谢
【问题讨论】:
-
如果模型中的表不是由迁移创建的,也会发生这种情况。见:stackoverflow.com/a/39246325/1551116
标签: django unit-testing django-models sqlite