让我们考虑一下处理热修复的最佳策略是什么?Flyway 常见问题解答部分的问题。在这个问题中:
- 应用程序版本 7(和数据库版本 7)在生产中部署
- 应用程序版本 8 开始工作
- DB版本8在验收测试环境中开发部署
- 在生产中发现错误
- DB 7.1 版已开发,必须经过验收测试
当针对验收测试环境调用 flyway:migrate 时,它会注意到 v8 已经执行,因此无需执行 v7.1。
一方面这是有道理的,因为 v7.1 可能与 v8 不兼容,而且 Flyway 无法对此进行分析。快速失败是完全可以理解的。
另一方面,将 v7.1 部署到验收测试环境的唯一方法是清理数据库并运行 flyway:migrate with target = v7.1,从而丢弃可能已经使用的数据。
是否有一个我不知道的功能可以处理这种情况,还是 clean + migrate.target=v7.1 是唯一的选择?