2

让我们考虑一下处理热修复的最佳策略是什么?Flyway 常见问题解答部分的问题。在这个问题中:

  1. 应用程序版本 7(和数据库版本 7)在生产中部署
  2. 应用程序版本 8 开始工作
  3. DB版本8在验收测试环境中开发部署
  4. 在生产中发现错误
  5. 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 是唯一的选择?

4

1 回答 1

0

不仅仅是一个不同的功能,它是一个不同的过程。

如果您确实希望将数据保留在您的验收环境中,我建议您发布带有修补程序的数据库 v8,然后实际更改可以是 v8.1。在部署相应的代码之前,v8 模式的功能可能会一直未被使用。然而,在大多数情况下,这不会造成任何伤害。

于 2011-08-06T03:47:10.903 回答