Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Flyway处理新的中间迁移_Java_Database_Flyway - Fatal编程技术网

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版将成为可能。