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

标签 liquibase flyway

liquibase 和 flyway 等工具无疑可以轻松升级您的数据库。我还没有弄清楚如何最好地处理发布分支和主干上发生的更改。

一个例子:

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

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

版本 3.x 发布到野外生产数据库的将已经从 2.5.1 更改。升级可能会失败。

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

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

最佳答案

你是正确的承认生产数据库更改将始终是线性的 .

要解决此问题,您应该将 DB 迁移 2.5.1 放在分支和主干上。而不是创建具有相同更改的 3.0.1!

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

然后将生产升级到主干

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

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

    关于liquibase - 数据库变更管理 - 如何处理分支和主干上的变更,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11632922/

    相关文章:

    java - Liquibase 是否在 Spring Boot 应用程序中注册所有 bean 之前运行?

    java - liquibase 变更集中的继承

    gradle - 如何将Flyway升级到4.0

    postgresql - 如何在flyway创建的postgresql jdbc连接上设置时区?

    java - FlyWay 版本

    gradle - liquibase gradle插件找不到方法

    database - 如何使用 liquibase,一个具体的例子

    database - Liquibase Maven 和命令行工作方式不同

    spring-boot - 带有 Spring Boot 和 gradle 的 flyway--org.flywaydb.core.Flyway : method <init>()V not found

    oracle - H2和Oracle兼容性问题