【问题标题】:Managing hotfixes with Flyway使用 Flyway 管理修补程序
【发布时间】:2023-04-09 22:17:02
【问题描述】:

假设我有 2 个分支:

使用迁移进行开发

 V1_change1
 V2_change2
 V3_change3
 V4_change4
 V5_change5

Master 迁移(部署在生产环境中):

V1_change1
V2_change2

现在我在生产上做hotfix,添加新的迁移V3_sth_completely_different,所以情况是:

使用迁移进行开发

 V1_change1
 V2_change2
 V3_change3
 V4_change4
 V5_change5

Master 迁移(部署在生产环境中):

V1_change1
V2_change2
V3_sth_completely_different

接下来,我正在合并部署到 master 的更改以进行开发(我正在使用支持分支来完成所有这些工作,但目前并不重要)。

我想拥有一致的数据库版本(V1、V2、V3 ...),所以我不想使用时间戳。因为没有回滚功能,所以我必须:

  1. 从数据库中手动移除 V3_change3、V4_change4、V5_change5 迁移
  2. 删除 schema_version 中的行
  3. 将名称 V3_change3 更改为 V6_change3(如果没有冲突,如果有我必须更改所有后续迁移)

我终于有了:

使用迁移进行开发

 V1_change1
 V2_change2
 V3_sth_completely_different
 V4_change4
 V5_change5
 V6_change3

Master 迁移(部署在生产环境中):

V1_change1
V2_change2
V3_sth_completely_different

问题是:我是不是做得过火了?

如何管理使用 Flyway 保留简单版本号 V1、V2、V3... 的修补程序?

我现在使用的过程非常繁琐。

================================================ ==========================

【问题讨论】:

    标签: java database flyway


    【解决方案1】:

    Flyway 常见问题解答在 What is the best strategy for dealing with hot fixes? 下对此进行了介绍,但是它使用您希望避免的 x.y 版本号。另一种方法是将版本号乘以 10 或 100,并使用中间整数来表示修补程序。使用 10 可以获得 9 个修补程序,或者使用 100 可以获得 99。

    【讨论】:

      【解决方案2】:

      是的,我认为你想多了。

      为什么您需要“简单版本号”?正如@Hamish Carpenter 所说,Flyway 使用虚线版本号涵盖了这个用例。这样,您就不必执行所有繁琐的(如您所说的)步骤,这些步骤会丢弃所有旨在维护架构完整性的校验和。

      【讨论】:

        猜你喜欢
        • 2013-07-08
        • 2019-03-12
        • 1970-01-01
        • 2022-06-22
        • 2013-03-06
        • 1970-01-01
        • 2019-06-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多