2

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

我使用symfony3 配方

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

我已经通过谷歌和 Stackoverflow 搜索找到解决这个问题的人,但我似乎找不到任何人。

你有个好主意吗?

4

1 回答 1

2

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

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

  1. 部署 B 已部署,它具有不使用full name列的迁移,而是拆分为first nameand last name。该full name列仍然保持向后兼容;
  2. 假设 B 不稳定:您回滚到 A。由于仍有一个完全工作的full name列,因此不需要迁移回滚;
  3. 假设 B 是稳定的:在部署 Deploy C 时,应该执行一次迁移,首先确保所有full name值都被拆分,first name然后last name完全删除该full name列;
  4. 假设部署 C 不稳定:您回滚到 B,因为它们都只使用full name,因此不需要迁移回滚。
于 2017-11-24T13:05:07.493 回答