1

我最近才发现Flyway,在阅读和搜索它时,我遇到了以下博客文章:数据库模式演变与模式版本控制

所以我想知道:

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

编辑:

常见问题解答简要讨论了这一点(没有为上述问题提供解决方案)。

4

1 回答 1

3

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

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

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

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

于 2012-08-08T21:03:47.887 回答