使用Flyway管理修补程序

时间:2017-10-18 11:20:53

标签: java database flyway

假设我有2个分支:

使用迁移

开发

 V1_change1
 V2_change2
 V3_change3
 V4_change4
 V5_change5
迁移的

(在生产中部署):

V1_change1
V2_change2

现在我正在做生产修补程序,添加新的迁移V3_sth_completely_different,所以情况是:

使用迁移

开发

 V1_change1
 V2_change2
 V3_change3
 V4_change4
 V5_change5
迁移的

(在生产中部署):

V1_change1
V2_change2
V3_sth_completely_different

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

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

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

    使用迁移

    开发

     V1_change1
     V2_change2
     V3_sth_completely_different
     V4_change4
     V5_change5
     V6_change3
    
    迁移的

    (在生产中部署):

    V1_change1
    V2_change2
    V3_sth_completely_different
    

    问题是:我是否过度了?

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

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

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

2 个答案:

答案 0 :(得分:1)

Flyway常见问题解答涵盖了What is the best strategy for dealing with hot fixes?下的内容。但是它使用了您希望避免的x.y版本号。另一种方法是将版本号乘以10或100,并使用inbetween整数表示修补程序。使用10将为您提供9个修补程序,或者100为您提供99。

答案 1 :(得分:0)

是的,我认为您想得太多。

为什么您需要“简单版本号”?就像@Hamish Carpenter所说的那样,Flyway的使用案例都用点号表示。这样,您不必执行所有繁琐的步骤(如您所说)即可摆脱所有旨在维护架构完整性的校验和。