Java 如何使用Flyway处理新的中间迁移
我最近才发现,在阅读和搜索时,我发现了以下博文: 所以我想知道:Java 如何使用Flyway处理新的中间迁移,java,database,flyway,Java,Database,Flyway,我最近才发现,在阅读和搜索时,我发现了以下博文: 所以我想知道: 它所说的仍然是真的(甚至当时是真的) 使用flyway时应如何处理此类情况 编辑: 常见问题解答简要介绍了(没有给出上述问题的解决方案)。关于dbdeploy我不能说太多,但是关于flyway的陈述是正确的。Flyway在处理SQL脚本方面非常严格: 每个脚本只部署一次,并且必须比以前部署的所有脚本具有更高的版本号(因此无法返回历史) 无法再修改已部署的脚本 这种严格性不是一件坏事,但是像有几个引入数据库修改的代码分支这样
- 它所说的仍然是真的(甚至当时是真的)
- 使用flyway时应如何处理此类情况
常见问题解答简要介绍了(没有给出上述问题的解决方案)。关于dbdeploy我不能说太多,但是关于flyway的陈述是正确的。Flyway在处理SQL脚本方面非常严格:
- 每个脚本只部署一次,并且必须比以前部署的所有脚本具有更高的版本号(因此无法返回历史)
- 无法再修改已部署的脚本
我们在这种情况下使用flyway,但我们必须采取一些变通办法。首先,我们将所有SQL脚本分为两组:已经投入生产的脚本和尚未投入生产的脚本。所有不在生产环境中的脚本(无论它们位于哪个分支上)都可以随时修改。为了支持这一点,我们以一种可以根据需要频繁执行的方式编写脚本。其次,我们干预flyway的簿记,这是在一个名为
SCHEMA\u VERSION
的表中完成的。在那里,我们将在每次flyway迁移之前删除所有尚未投入生产的条目。在开发系统上启动迁移时,flyway每次都将执行所有新脚本。但是,在生产系统上,新脚本在上线时只执行一次。+1这仍然是正确的。一旦实施,1.8版将成为可能。