回滚原则:使用Deployer进行迁移

时间:2017-11-24 12:28:12

标签: symfony doctrine-orm doctrine doctrine-migrations php-deployer

我有一个Symfony 3应用程序,我使用deployer来部署我的应用程序。我也使用Doctrine Migrations来迁移我的数据库。

我使用symfony3 recipe

当我运行dep deploy时,部署者会迁移我的数据库。但是,当我运行dep rollback时,它不会回滚相应的学说迁移。

我搜索了Google和Stackoverflow,找到解决此问题的人,但我似乎无法找到任何人。

你有个好主意吗?

1 个答案:

答案 0 :(得分:2)

您可以使用向后兼容的迁移,这样就不需要回滚了。

由于它可能导致数据库混乱,因此定期清理BC层通常是一个好主意。例如:

  1. 部署B已部署,它的迁移不使用full name列,而是分为first namelast namefull name列仍然保持向后兼容;
  2. 假设B不稳定:您回滚到A.由于仍有完整的full name列,因此不需要迁移回滚;
  3. 假设B稳定:部署部署C时,应执行迁移,首先确保在full namefirst name中拆分所有last name值,然后删除{{1完全填充列;
  4. 假设部署C不稳定:您回滚到B,因为它们都只使用full name,不需要迁移回滚。