检测到的解析偏移不适用于飞行路线上的数据库

我们正在使用 Flyway 来管理数据库模式版本,我们面临着一个问题。因为我们是一个团队,并且使用 git 作为我们的源代码管理,所以在某些情况下,不同的人会在他们自己的本地回购上更新数据库模式。如果发生这种情况,我们将得到

检测到未应用于数据库的解析迁移: 2016.03.17.16.46”

时间“2016.03.17.16.46”是另一个人添加的,我已经在这个时间之后应用了一些时间戳。如果发生这种情况,我们必须清理所有数据库表并重新创建它们。我们已经尝试在 validateOnMigrateflywayClean上设置假值,但没有任何帮助。还有别的办法吗?

82588 次浏览

迁移选项 outOfOrder是您的朋友在这里。设置为真允许插入这些迁移后的事实。

在命令行上,运行:

flyway -outOfOrder=true migrate

或者如果你使用 Maven 插件:

mvn -Dflyway.outOfOrder=true flyway:migrate

在从一个 git 分支切换到另一个分支并尝试运行时,我遇到了类似的问题 flyway:migrate. 例如,当我在分支‘ release _ 4.6.0’上时,我在本地机器上没有从分支‘ release _ 4.7.0’进行迁移,所以 我收到了下一个错误 FlywayException: Validate failed: Detected applied migration not resolved locally. 我的解决方案是将 ignoreMissingMigrations飞行路径选项设置为 true。 在 Maven 看起来

flyway:migrate -Dflyway.ignoreMissingMigrations=true

也许这不是这个问题的答案,但是对于那些和我面临同样问题的人来说,这是有帮助的。

你可在此找到更多资料: Https://flywaydb.org/documentation/configuration/parameters/ignoremissingmigrations

加上 spring.flyway.ignore-missing-migrations=true 如果使用 spring-boot,则将。

这将忽略以前的迁移。

在我的例子中,我只是将迁移文件重命名为其他名称,然后将其重命名回来——只是为了更新文件的修改日期。而且成功了。

你也可以把它放在你的 application.properties文件,如果你想应用迁移时启动应用程序:

spring.flyway.out-of-order=true

在我的示例中,数据库中存在一个版本为319的行,对应的319文件被重命名为 do 330,因此数据库注册表无法找到对应的文件。从数据库中删除行解决了这个问题。

outOfOrder没有为我们解决问题。
在删除之前,一个部署中有两个迁移。 因此,我们重新添加了这些迁移,并撤销了另一个迁移中的更改。
成功了