liquibase和flyway等工具肯定可以轻松升级数据库。我没想到的是如何最好地处理发布分支和主干上发生的变化。
一个例子:
我在产品中的代码是2.5版本,并且位于发布分支上。与此同时,开发人员已经开始研究3.0版本,它位于trunk上。
生产中发现了一个错误。创建数据库更改脚本(2.5.1)并将其提交到发布分支。必须将相同的更改脚本合并回主干(3.0.1?)。
版本3.x被发布到野生生产数据库中已经有2.5.1的变化。升级可能会失败。
相反,如果我从头开始创建数据库,如果我使用的是仅向前策略,我会发生两次相同的更改(2.5.1和3.0.1)。
其他人如何处理这种情况?
答案 0 :(得分:0)
您认为生产数据库更改始终是线性的是正确的。
要解决此问题,您应将数据库迁移2.5.1放在分支和主干上。而不是使用相同的更改创建3.0.1!
这样它将与分支一起部署,但也与trunk一起部署。
然后将生产升级到主干
当然,有一个更好的解决方案。这就是完全摆脱分支,并始终使用功能切换从主干释放。