【问题标题】:Django on Heroku - ProgrammingError at / relation "..." does not existHeroku上的Django-/关系“...”处的ProgrammingError不存在
【发布时间】:2018-01-03 18:33:46
【问题描述】:

我收到this 错误。我知道您通常会收到此错误,因为数据库未正确迁移。

当我运行heroku local web 时,当我转到localhost:5000 时网站运行良好。

但是,在我使用 git push heroku master 将应用程序部署到 heroku 后,出现了错误。

换句话说,它适用于我的本地环境。但是部署到heroku后就不行了。

我在 heroku 中安装了 Heroku-Postgres 作为插件。

这可能是什么原因造成的?

【问题讨论】:

  • 你跑heroku run manage.py migrate了吗?
  • @DanielRoseman 这就是问题所在。我正在做python manage.py migrate,然后部署它,认为这会奏效。谢谢。

标签: django heroku


【解决方案1】:

在 bash heroku 中执行迁移和 makemigrations。在本地项目文件夹中打开终端并给出以下命令:

heroku run bash
~$  ./manage.py makemigrations
~$  ./manage.py migrate
~$  exit

【讨论】:

  • 不,不要在 Heroku 上运行 makemigrations。到您部署时,您不应该有任何会产生新迁移的模型更改。 本地运行,然后提交迁移文件。在 Heroku 上,您应该只通过 manage.py migrate 运行迁移。
【解决方案2】:

以下步骤为我完成了

  1. 进行所有必要的迁移 (python manage.py makemigrations) 并在本地迁移 (python manage.py migrate),
  2. 推送给heroku master
  3. 最后运行heroku run python manage.py migrate

解决了问题

【讨论】:

    【解决方案3】:

    在对模型进行更改然后将此更改部署到 heroku 后,我遇到了同样的错误。

    我设法解决此问题的唯一方法是执行以下操作:

    • 在heroku中重置数据库
    • 从本地损坏应用程序的迁移文件夹中删除迁移文件(但保留目录和 __init__.py 文件)
    • 运行python manage.py makemigrationspython manage.py migrate。这将使用干净的迁移文件重新填充迁移文件夹。
    • 将更改推送到 master(确保 .gitignore 文件中没有迁移目录。
    • 将更改部署到 heroku
    • 运行heroku shell heroku run bash
    • 运行python manage.py migrate

    我能够这样做是因为我的表中没有太多数据,但如果我的表中有更多数据,我会尽量避免重置数据库。

    【讨论】:

    • 请问如何重置heroku中的数据库?
    • 使用 heroku web 控制台很容易完成。在 dashboard.heroku.com 中选择您的应用程序。您将在附加组件下找到数据库,这是您可以用来重置数据库的选项之一。
    猜你喜欢
    • 2021-03-09
    • 2016-04-11
    • 2016-05-01
    • 2021-01-03
    • 2016-10-01
    • 2016-11-03
    • 1970-01-01
    • 2021-01-29
    相关资源
    最近更新 更多