我最近从一个旧的数据库迁移提供程序迁移到了flyway(4.1.2)。在我们的设置中,我们 - 像往常一样 - 一些可重复的增量脚本和脚本。到目前为止,事情运作良好,我能够重新创造我们之前的大部分行为,并且由于flyway的改进。但是,我遇到了可重复脚本的奇怪行为。
让我们想象下面的脚本:
DELETE FROM CONFIGURATION;
INSERT INTO CONFIGURATION (KEY, VALUE) VALUES ('SAF_DELAY', '22');
它在创建时执行并执行它应该执行的操作。还使用校验和创建了schema_version中的条目。现在我将22
更改为23
并再次运行flyway:migrate,执行脚本并使用新的校验和在schema_version中创建第二个条目。过了一会儿,我发现23
实际上很糟糕,22
从一开始就是正确的,所以我把它改回来。
现在,flyway拒绝再次执行脚本,告诉我即使脚本已从之前的状态更改,一切都是最新的。我假设它这样做是因为它仍然可以在schema_version中找到旧条目。
显然,这是可重复脚本的不良行为,决策点应该只是最后执行的校验和,而不是任何执行过该脚本的校验和。这也是我假设文档的意思是“相反,他们每次校验和更改时都会(重新)应用 。”我正在浏览maven插件的配置部分,但找不到任何看起来像解决方案的东西。
由于这对我来说是一种交易破坏,如果你能向我提示正确的方向,我会很高兴。