Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发布失败后在Heroku上运行反向Django迁移_Django_Heroku_Django Migrations - Fatal编程技术网

发布失败后在Heroku上运行反向Django迁移

发布失败后在Heroku上运行反向Django迁移,django,heroku,django-migrations,Django,Heroku,Django Migrations,我在Heroku上有一个正在运行的Django应用程序,在发行版上自动运行迁移。虽然在大多数情况下,这很好,但有时在以下情况下会出现问题: 给定版本中有多个迁移(它们可以在不同的应用程序中) 有些迁移会失败,但不是第一次 在这种情况下,manage.py migrate将失败,因此Heroku不会完成发布,也不会部署新代码。这意味着代码是旧版本的,数据库处于“新旧之间”的状态 在Heroku上的release命令失败的情况下,是否有一种简单的方法自动运行Django运行反向迁移 事务在这里没

我在Heroku上有一个正在运行的Django应用程序,在发行版上自动运行迁移。虽然在大多数情况下,这很好,但有时在以下情况下会出现问题:

  • 给定版本中有多个迁移(它们可以在不同的应用程序中)
  • 有些迁移会失败,但不是第一次
在这种情况下,
manage.py migrate
将失败,因此Heroku不会完成发布,也不会部署新代码。这意味着代码是旧版本的,数据库处于“新旧之间”的状态

在Heroku上的release命令失败的情况下,是否有一种简单的方法自动运行Django运行反向迁移


事务在这里没有帮助,因为可能会有多个迁移(多个应用程序),Django会在单独的事务中运行每个迁移。

因为我找不到任何现有的解决方案,所以我发布了一个我为解决此问题而编写的要点

代码在运行迁移之前存储迁移状态,如果出现任何异常,代码将恢复到此状态。它还检查在
migrate
步骤中是否所有迁移都是可逆的


它还没有经过很好的测试,但我将努力从中创建一个库,以便于其他人使用。

您看过吗?据我所知,似乎没有“恢复”迁移的选项。我不相信“没有办法做到这一点”,最坏的情况下,我可以编写自己的迁移命令,但我正在寻找更简单的方法。对不起,我只是从谷歌快速搜索中获取第一个相关结果。