gpt4 book ai didi

java - 如何使用 Flyway 处理新的中间迁移

转载 作者:搜寻专家 更新时间:2023-10-30 22:16:16 24 4
gpt4 key购买 nike

我最近才发现 Flyway在阅读和搜索它时,我遇到了以下博客文章:Database schema evolution versus schema versioning .

所以我想知道:

  • 它所说的仍然是真的吗(甚至当时是真的)
  • 在使用flyway时应该如何处理这种情况。

编辑:

常见问题解答简要讨论了 this (没有给出上述问题的解决方案)。

最佳答案

关于 dbdeploy 我不能说太多,但关于 flyway 的说法是正确的。 Flyway 对处理 SQL 脚本非常严格:

  • 每个脚本仅部署一次,并且必须具有比之前部署的所有脚本更高的版本号(因此无法回溯历史)
  • 无法再修改已部署的脚本

这种严格性并不是坏事,但不支持开箱即用的场景,例如具有多个引入数据库修改的代码分支。

我们在这种情况下使用 flyway,但我们必须采取一些变通办法。首先,我们将所有 SQL 脚本分为两组:已经在生产中的脚本和尚未生产的脚本。所有未投入生产的脚本(无论它们在哪个分支上)都可以随时修改。为了支持这一点,我们以一种可以根据需要经常执行的方式编写脚本。其次,我们干预 flyway 的簿记,该簿记在名为 SCHEMA_VERSION 的表中完成。在那里,我们在每次飞行路线迁移之前删除所有尚未投入​​生产的条目。当在开发系统上启动迁移时,flyway 将每次执行所有新脚本。然而,在生产系统上,新脚本在上线时仅执行一次。

关于java - 如何使用 Flyway 处理新的中间迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11872011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com