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 错误触发