数据库更改管理 - 如何处理分支和主干上的更改

时间:2012-07-24 14:21:39

标签: liquibase flyway

liquibase和flyway等工具肯定可以轻松升级数据库。我没想到的是如何最好地处理发布分支和主干上发生的变化。

一个例子:

我在产品中的代码是2.5版本,并且位于发布分支上。与此同时,开发人员已经开始研究3.0版本,它位于trunk上。

生产中发现了一个错误。创建数据库更改脚本(2.5.1)并将其提交到发布分支。必须将相同的更改脚本合并回主干(3.0.1?)。

版本3.x被发布到野生生产数据库中已经有2.5.1的变化。升级可能会失败。

相反,如果我从头开始创建数据库,如果我使用的是仅向前策略,我会发生两次相同的更改(2.5.1和3.0.1)。

其他人如何处理这种情况?

1 个答案:

答案 0 :(得分:0)

您认为生产数据库更改始终是线性的是正确的。

要解决此问题,您应将数据库迁移2.5.1放在分支和主干上。而不是使用相同的更改创建3.0.1!

这样它将与分支一起部署,但也与trunk一起部署。

然后将生产升级到主干

  • 找到迁移2.5.1并跳过它,因为它已经应用
  • 查找迁移3.0并将其应用于2.5.1 db

当然,有一个更好的解决方案。这就是完全摆脱分支,并始终使用功能切换从主干释放。