从 github 部署更改的模型时,如何在 heroku 上运行 makemigrations/migrate?

Posted

技术标签:

【中文标题】从 github 部署更改的模型时,如何在 heroku 上运行 makemigrations/migrate?【英文标题】:What to do to run makemigrations/migrate on heroku when deploying changed models from github? 【发布时间】:2017-09-20 05:00:02 【问题描述】:

我已将应用程序从 github 存储库部署到我作为合作者的客户的 heroku 帐户,但这次我必须添加一些新模型。

但是我意识到,当我从 github 部署我的更改时,heroku 不会运行 makemigrations 和 migrate。

我在 *** 上阅读了一些答案,并理解它应该是这样的。

但是我的问题是我该怎么办?将变更模型部署到 heroku 应用程序的最佳实践是什么? (我认为它不会再次删除和重新创建我的应用程序,因为客户已经在那里拥有数据。)

(我可以运行 makemigrations 并手动从 bash 迁移,但是当我有 30 多个部署时,这很痛苦)

【问题讨论】:

这里已经说过很多次了,你在本地运行 makemigrations 并提交结果,然后在 Heroku 上运行 migrate。 (我不明白你提到 30 次部署。) 谢谢@Daniel Roseman。 30 个部署是指我必须将相同的代码部署到 30 个不同的云帐户。这意味着我必须为他们每个人运行迁移。 这似乎是一件奇怪的事情。您确定不想要单个部署,扩展到 30 dynos? 计划就是这样。欢迎任何反馈。理想情况下最终会超过 30 个。欢迎任何反馈。 ***.com/questions/42872949/… 【参考方案1】:

查看 Heroku 上名为“发布阶段”的新功能:https://devcenter.heroku.com/articles/release-phase 它允许您在部署期间运行迁移。只需将您想要的任何命令添加到您的 Procfile 中,如下所示:

web: your_web_command
release: python manage.py migrate

release 命令将在您的应用构建完成之后、启动之前运行。

【讨论】:

以上是关于从 github 部署更改的模型时,如何在 heroku 上运行 makemigrations/migrate?的主要内容,如果未能解决你的问题,请参考以下文章

进行模型更改时,Django 依赖项引用不存在的父节点

ECS 使用 ECR 自动部署

自动部署 Elastic Beanstalk 更改

从 GitHub 部署时处理 config.json 文件

从电影《Her》来看AI时代下,未来的七夕我们将会如何度过?

如何将代码更改从 Eclipse 提交到 GitHub