使用 Flyway 管理修补程序

msi*_*kis 5 java database flyway

假设我有 2 个分支:

通过迁移进行开发:

 V1_change1
 V2_change2
 V3_change3
 V4_change4
 V5_change5
Run Code Online (Sandbox Code Playgroud)

具有迁移的主控(部署在生产中):

V1_change1
V2_change2
Run Code Online (Sandbox Code Playgroud)

现在我正在生产上进行修补程序,添加新的迁移V3_sth_completely_ Different,所以情况是:

通过迁移进行开发:

 V1_change1
 V2_change2
 V3_change3
 V4_change4
 V5_change5
Run Code Online (Sandbox Code Playgroud)

具有迁移的主控(部署在生产中):

V1_change1
V2_change2
V3_sth_completely_different
Run Code Online (Sandbox Code Playgroud)

接下来,我将合并部署到 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
Run Code Online (Sandbox Code Playgroud)

具有迁移的主控(部署在生产中):

V1_change1
V2_change2
V3_sth_completely_different
Run Code Online (Sandbox Code Playgroud)

问题是:我是否做得太过分了?

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

我现在使用的过程非常麻烦。

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

Ham*_*ter 4

Flyway 常见问题解答在“处理修补程序的最佳策略是什么?”下对此进行了介绍。但是它使用了您希望避免的 xy 版本号。另一种方法是将版本号乘以 10 或 100,并使用中间的整数来表示修补程序。使用 10 可以得到 9 个修补程序,或者使用 100 可以得到 99 个修补程序。