在向数据库添加新模型实例时,Django中的ProgrammingError有什么问题?
使用Django管理面板时,我可以将新实例添加到用户和组。同样的事情适用于我的所有应用程序,除了一个。这个应用程序,resultregistration,每当我尝试添加新模型时,都会给我一个ProgrammingError。例如,这个应用程序有一个竞争模型,其中应存储关于运动竞赛的数据。在向数据库添加新模型实例时,Django中的ProgrammingError有什么问题?
当我点击“+添加”我被带到正确的网站,我可以添加一个新的竞争。然而,当我按保存我得到:
ProgrammingError在/管理/ resultregistration /竞争/添加/
列关系的 “competition_category” “resultregistration_competition” 不存在 LINE 1:INSERT INTO “resultregistration_competition”( “competition_c ...
当然,我认为迁移有些问题,但是我已经运行了python manage.py makemigrations appname和python manage.py migrate appname,并且工作正常。有“没有检测到变化”和“没有迁移应用”
我已经尝试过在SO上发布的解决方案,但他们都没有工作。
这个错误的一般原因是什么?有没有人知道在这个特定情况下可能会出现什么错误?如果在模型中定义了错误,会不会得到这个错误?还是必须是迁移问题?
非常感谢!任何帮助将被真正赞赏。此外,我使用PostgreSQL,如果有帮助。
- 请确保您有_ 初始化 _.py为paticular应用程序的迁移文件夹下的文件。
- 运行manage.py makemigrations总是进行了迁移文件,如果有你的models.py任何改变
如果没有完成,没有心不是在数据库中存在大量的数据,最终的解决方法是删除所有迁移文件(如果有的话),在终端类型“sudo -su postgres”中输入“psql”。
删除数据库并创建一个新数据库。运行manage.py makemigrations来检查是否已创建迁移文件。然后使用manage.py迁移
谢谢!丢弃数据库是这次的唯一工作:) – user3257736
@ user3257736多数民众赞成在最后的手段。 –
如果没有访问应用的代码和修订历史记录,就无法回答。您的模型是由ORM管理还是遗留表格?何时创建此“competition_category”列并且是否存在匹配迁移? (提示:阅读你的应用程序的迁移,并检查'django_migrations'表来找出哪些应用程序和什么时候)。 –
迁移有问题。检查你的数据库看看'competition_category'列是否真的存在。我建议你逐一回滚迁移并重新应用它们以找出发生此问题的位置。 – anupsabraham