【问题标题】:Django migration not working properly on Heroku [duplicate]Django迁移在Heroku上无法正常工作[重复]
【发布时间】:2026-01-28 22:20:03
【问题描述】:

我在 3 个月前部署了一个 Django 应用程序,我能够在 heroku bash 上轻松迁移更改。现在我正在尝试这个:

heroku run python manage.py migrate

也试过这个:

heroku run python manage.py migrate --no-input

我尝试像这样访问 heroku bash:

heroku run bash

然后运行:

~ $ python manage.py migrate

所有这些命令似乎都有效: https://i.stack.imgur.com/JWW6S.png

但他们没有。当我再次尝试迁移时,我认为它会向我展示典型的没有可应用的迁移。。但事实并非如此

¿我应该如何迁移更改?

【问题讨论】:

  • 您使用的是什么数据库? Sqlite?
  • @MarcusAldrey 是的
  • 你能否分享更多细节,你能在控制台上看到什么,你能看到数据库中的数据/表。当你运行你的应用程序时,你能看到新的迁移表吗?您是否尝试在本地运行相同的迁移? heroku 与本地的 Django 版本?
  • @ShreeyanshJain 我尝试输入python manage.py shell,以便查看是否添加了表格,但它们没有。我认为这是因为@MarcusAldrey 在答案中所说的。 Heroku 立即删除迁移更改。是的,我在 pythonanywhere 上部署了该应用程序,它运行良好。问题只出在 Heroku 上。

标签: python django bash heroku


【解决方案1】:

如果您使用的是 SQlite,Heroku 上的迁移更改会立即应用和删除。您必须使用 Heroku Postgres 附加组件(如果已安装,请检查您的项目概述)并将其添加到您的 settings.py

if "DATABASE_URL" in os.environ:
    import dj_database_url

    DATABASES = {"default": dj_database_url.config()}

您也可以将其添加到您的 Procfile 以在部署时迁移

release: python manage.py migrate

【讨论】:

  • 我已经在 Procfile 中添加了 release。我想在 settings.py 上测试该更改,但我正在使用 pythonanywhere 和那里,这个 django 应用程序按预期工作。它可能会改变行为,我只想使用 heroku 来测试事物和 pythonanywhere 进行生产部署。