gpt4 book ai didi

django: sqlite3.OperationalError: 没有这样的表

转载 作者:IT王子 更新时间:2023-10-29 06:21:42 25 4
gpt4 key购买 nike

我现在不知道为什么,但从一天到另一天,当我尝试运行测试时,你开始遇到问题。我正在使用 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

我找不到那个表名。

谁能帮帮我?

谢谢

最佳答案

我也遇到过这个问题。结果我必须在 settings.py 文件中添加一个 TEST_NAME 属性才能正确识别测试数据库。它为我解决了问题:

if 'test' in sys.argv:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(os.path.dirname(__file__), 'test.db'),
'TEST_NAME': os.path.join(os.path.dirname(__file__), 'test.db'),
}
}

关于django: sqlite3.OperationalError: 没有这样的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8416987/

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