【问题标题】:Django SQLite on Heroku doesn't recognize any of the changed models and throws a "relation doesn't exist" errorHeroku 上的 Django SQLite 无法识别任何更改的模型并抛出“关系不存在”错误
【发布时间】: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


【解决方案1】:

我从 Heroku 中完全删除了该应用程序并重新创建。它现在正在工作。

【讨论】:

    猜你喜欢
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 2016-02-24
    • 2018-02-08
    • 2018-08-11
    相关资源
    最近更新 更多