我将应用程序部署到Heroku,但无法添加任何数据。当我尝试打开包含模型中数据的第一个表时,收到以下错误消息:
ProgrammingError at /category/category_table
relation "tables_category" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "tables_category"
当我尝试添加第一个数据时,收到以下错误消息:
ProgrammingError at /admin/tables/category/add/
relation "tables_category" does not exist
LINE 1: INSERT INTO "tables_category" ("category_name") VALUES ('sho...
我在这里经历了类似的问答,但它们并没有解决我的问题,因为我已经:
a)从我的本地磁盘删除所有迁移文件,然后
B)我运行:python3 manage.py进行迁移
c)我运行:heroku运行python3 manage.py迁移
所以一切都应该是最新的,我有这个日志从Heroku:
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions, tables
Running migrations:
No migrations to apply.
所以目前不知道该怎么办。
1条答案
按热度按时间wztqucjr1#
不删除迁移
这里的第一步是非常危险的:
我已经...从本地磁盘删除了所有迁移文件
您生成的新迁移很可能无法在本地计算机上运行。它们将尝试从空数据库迁移到您当前的任何状态,但您(可能)在本地数据库中已经有了以前迁移的表,甚至可能还有数据。
删除迁移几乎从来都不是正确的答案。我知道很多人在遇到迁移问题时都建议这样做,但他们错了。在早期开发阶段,丢弃数据库可能会觉得安全,但当以后有真实的数据时,这绝对是不可取的。
我强烈建议您恢复旧的迁移文件,然后在这些文件上生成新的迁移。
生成和应用迁移
当你跑的时候
在本地计算机上生成新的迁移文件 *。Heroku不知道这些文件的存在,因此运行
什么都不会做。
在本地计算机上创建迁移后,通过运行
python manage.py migrate
在 * 本地 * 应用它们,以确保它们执行它们应该执行的操作。当您对它们感到满意时,提交文件,重新部署到Heroku,然后 * 在Heroku上运行迁移。