我已将Django应用程序部署到heroku,但是我需要重置这些迁移。是否可以在不删除整个项目并重新部署的情况下实现?我在该数据库中有一些测试数据,我不想不必再次输入。
我想删除所有迁移文件并创建新文件。问题是,我从本地计算机上删除了所有迁移文件,并创建了新文件,因此现在本地计算机上的迁移文件全部为001。将其推送到heroku表示没有任何更改,因为其中已经存在001迁移文件。仅删除它们将起作用。基本上类似于
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
但是对于heroku。
答案 0 :(得分:1)
推送到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设置为可反映数据库模式的版本,然后使用上面的选项1。在这种情况下,您可以重新回滚到新版本,而不必进行常规发行。
答案 1 :(得分:0)
是的,可以通过两种方法完成。