Django迁移在Heroku上无法正常工作[重复]

Posted

技术标签:

【中文标题】Django迁移在Heroku上无法正常工作[重复]【英文标题】:Django migration not working properly on Heroku [duplicate] 【发布时间】:2021-12-02 09:40:28 【问题描述】:

我在 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 上。 【参考方案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 进行生产部署。

以上是关于Django迁移在Heroku上无法正常工作[重复]的主要内容,如果未能解决你的问题,请参考以下文章

由于静态错误,无法在 Heroku 上部署 Django [重复]

React 和 Django 网站未在 Heroku 上加载

django makemigrations 和 heroku 服务器上的迁移不创建表

Django + Heroku + Mandrill mail_admins() 无法正常工作,无论是手动还是由 500 错误触发

将 rails 应用程序从 3.2.3 迁移到 rails 4.0.0.rc2 后无法在 Heroku 上部署

在 Heroku 上部署时出现 Django 1.7 迁移错误