我的一个django应用程序中的模型有问题。在
我可以创建模型的一个实例,但是当我访问它时,我得到一个错误:
# create and save model instance
user_form = UserSearchForm(user=user)
user_form.save()
# Then later
first_user_form = UserSearchForm.objects.all()[0]
(1146, "Table 'project.app_tablename' doesn't exist")
Request Method: GET
Request URL: http://10.0.75.1:8000/search/
Django Version: 1.9.5
Exception Type: ProgrammingError
Exception Value:
(1146, "Table 'project.app_tablename' doesn't exist")
Exception Location: /opt/project-venv/lib/python3.4/site-packages/MySQLdb/connections.py in query, line 280
Python Executable: /opt/project-venv/bin/python
Python Version: 3.4.3
Python Path:
['/opt/project/project',
'/opt/project-venv/lib64/python34.zip',
'/opt/project-venv/lib64/python3.4',
'/opt/project-venv/lib64/python3.4/plat-linux',
'/opt/project-venv/lib64/python3.4/lib-dynload',
'/usr/lib64/python3.4',
'/usr/lib/python3.4',
'/opt/project-venv/lib/python3.4/site-packages']
Server time: Tue, 28 Mar 2017 22:50:16 +0000
我使用的是Django 1.95,我从链接的答案(https://stackoverflow.com/a/36565161/2516846)中尝试了以下操作:
但是,当我运行migrate时,会出现错误:
^{pr2}$摘要:无法再次创建模型,因为关系已经存在,但无法访问我的应用程序中的模型,因为它说表不存在
是否有对存储在其他位置的此表/模型的引用需要删除?如果我删除了表,删除了migrations文件夹并从db中删除了migrations,我不知道这个关系是如何存在的
好吧,终于解决了。在
我的项目有两个数据库,一个是使用postgres的“default”数据库,另一个是使用mysql的“secondary”数据库。在
当我在应用程序中创建新模型并运行迁移时,表被添加到默认数据库中。
这使我能够创建新模型的实例。在
但是,当我访问以前保存的实例时,我得到一个错误消息,说表不存在。在
原来是我的应用程序造成的路由器.py,它将所有查询重定向到“secondary”数据库,该数据库当然没有该表。
为了解决这个问题,我向中的db_for_write和db_for_read方法添加了条件路由器.py,将这些模型路由到“默认”数据库。在
备份模型.py,从原始代码中删除模型代码模型.py,然后运行:
然后简单地在中恢复模型代码模型.py再次运行上述命令。在
尝试删除或更改其中包含该模型的迁移文件,请注意依赖关系。然后再次运行
python manage.py makemigrations
,并且python manage.py migrate
它应该再次创建模型。(我们说的是你的测试数据库对吗?)在按照以下步骤进行修复:
python manage.py makemigrations
python manage.py migrate
相关问题 更多 >
编程相关推荐