【发布时间】:2021-03-17 17:20:24
【问题描述】:
我在 Django 上更改了几个模型的名称。成功运行 makemigrations 和 migrate。我可以直接以管理员身份或通过 localhost 上的请求与 SQLite 交互。
在更改表之前,我已经部署到 Heroku 并且它正在工作。当我更改模型名称并推送到 Heroku(在 localhost 上成功运行后)时,我遇到了问题。当我以管理员身份登录网站(在 Heroku 上)时,我可以与 User 和 Token 等表进行交互,但不能与新更新的模型进行交互。一旦我点击它们,我就会收到以下错误。当我点击添加到这些模型时,会出现这些列,但是一旦我点击保存,我也会收到以下错误。
/admin/app_name/model_name/ 处的编程错误 关系“app_name_model_name”不存在 第 1 行:从“app_name_model_name”中选择 COUNT(*) 作为“__count”
我保留 Debug=True 以查看发生了什么,否则我会收到“500 Internal Server Error”。我已将 heroku 的网站添加为“ALLOWED_HOSTS”。
当我尝试进行迁移时,我删除了迁移文件夹中的文件。不确定 Heroku 上是否有类似的过程,或者我是否遗漏了其他内容?
顺便说一句,我也使用“heroku run bash”运行了迁移命令。此外,有些模型只更改了名称,有些也进行了字段更新,但它们都在 Heroku 上抛出了相同的错误。
【问题讨论】:
-
“Heroku 上的 Django SQLite”——这不是入门。由于其ephemeral filiesystem,SQLite 与 Heroku 不兼容。 Heroku 的网站上有大量关于此的文档,这里有几个问题。
-
SQLite 有一些限制,但这里的重点是它与 Heroku 一起工作,但在更改和迁移模型后出现此错误。
-
Heroku 上的 SQLite 会导致 各种 问题,包括您看到的确切错误(例如,如果您不迁移并提交对数据库文件的更改,这本身就是一个巨大的反模式)。您需要切换到客户端-服务器数据库。 SQLite 不是 Heroku 上的一个选项。
-
“它正在与 Heroku 合作”——它不是。您的数据库会定期重置为您部署的提交中的任何状态。这包括数据和结构。
标签: django sqlite heroku model relation