我已经将 django 应用程序部署到 heroku,但我需要重置这些迁移。如果不删除整个项目并重新部署它是否可能?我在该数据库中有一些测试数据,我不想重新输入这些数据。
我想删除所有迁移文件并创建新文件。事情是,我从我的本地机器上删除了所有迁移文件并创建了新的,所以现在我本地机器上的迁移文件都是 001。将它推送到 heroku 说没有任何变化,因为那里已经存在 001 迁移文件。只有删除它们才有效。基本上类似于
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
但对于 heroku。
最佳答案
推送到 Heroku 是解决方案的一部分,但不是全部。这会更新迁移文件,但不会更新数据库中的 django_migrations
表。
如果您仍然在 Heroku 上运行旧代码:
备份你的数据库
撤消所有迁移:
heroku run python manage.py migrate appname zero
然后部署您的新代码:
git push heroku master
然后运行新的迁移:
heroku run python manage.py migrate
如果您已经将新代码部署到 Heroku:
备份你的数据库
从数据库中手动删除应用的表,以及
django_migrations
表中app
与您的应用名称匹配的行,例如通过heroku pg:psql
(如果您安装了其他应用程序和应用程序间依赖关系,这可能会变得棘手)运行您的新迁移:
heroku run python migrate
如果您已经部署了新代码,另一个可能更安全的选项是 rollback到反射(reflect)您的数据库架构的版本,然后使用上面的选项 1。在这种情况下,您可以再次回滚到新版本,而不是进行常规发布。
关于django - 是否可以在部署在 heroku 上的应用程序上重置 django 迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54779233/