使用 Flyway 管理修补程序
Managing hotfixes with Flyway
假设我有 2 个分支:
开发 迁移:
V1_change1
V2_change2
V3_change3
V4_change4
V5_change5
Master 迁移(部署在生产环境中):
V1_change1
V2_change2
现在我正在对生产进行修补程序,添加新的迁移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 ...)所以我不想使用时间戳。因为没有回滚功能,所以我必须:
- 从数据库中手动删除 V3_change3、V4_change4、V5_change5 迁移
- 删除 schema_version
中的行
- 将名称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
问题是:我是不是做得太过了?
如何使用保留简单版本号 V1、V2、V3...的 Flyway 管理修补程序?
我现在用的流程很繁琐
=========================================== ===========================
Flyway 常见问题解答在 What is the best strategy for dealing with hot fixes? 下涵盖了这一点,但是它使用了 x.y 版本号,您希望避免使用。另一种方法是将版本号乘以 10 或 100,然后使用中间整数表示修补程序。使用 10 给你 9 个修补程序或 100 给你 99.
是的,我认为你想多了。
为什么 "simple version numbers" 对您来说是一项要求?正如@Hamish Carpenter 所说,Flyway 在这个用例中使用了带点的版本号。这样,您就不必执行所有繁琐的(如您所说)步骤,这些步骤会丢弃所有旨在维护架构完整性的校验和。
假设我有 2 个分支:
开发 迁移:
V1_change1
V2_change2
V3_change3
V4_change4
V5_change5
Master 迁移(部署在生产环境中):
V1_change1
V2_change2
现在我正在对生产进行修补程序,添加新的迁移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 ...)所以我不想使用时间戳。因为没有回滚功能,所以我必须:
- 从数据库中手动删除 V3_change3、V4_change4、V5_change5 迁移
- 删除 schema_version 中的行
- 将名称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
问题是:我是不是做得太过了?
如何使用保留简单版本号 V1、V2、V3...的 Flyway 管理修补程序?
我现在用的流程很繁琐
=========================================== ===========================
Flyway 常见问题解答在 What is the best strategy for dealing with hot fixes? 下涵盖了这一点,但是它使用了 x.y 版本号,您希望避免使用。另一种方法是将版本号乘以 10 或 100,然后使用中间整数表示修补程序。使用 10 给你 9 个修补程序或 100 给你 99.
是的,我认为你想多了。
为什么 "simple version numbers" 对您来说是一项要求?正如@Hamish Carpenter 所说,Flyway 在这个用例中使用了带点的版本号。这样,您就不必执行所有繁琐的(如您所说)步骤,这些步骤会丢弃所有旨在维护架构完整性的校验和。