检测到已解决的迁移未应用于flyway上的数据库

Zha*_* Yi 30 database flyway

我们使用flyway来管理数据库模式版本,我们正面临一个问题.由于我们作为一个团队工作并使用git作为我们的源代码管理,因此在某些情况下,不同的人会在他们自己的本地存储库上更新数据库模式.如果发生这种情况,我们会得到

检测到已解决的迁移未应用于数据库:2016.03.17.16.46"

时间"2016.03.17.16.46"被另一个人添加,之前我已经应用了一些时间戳.如果发生这种情况,我们必须清理所有数据库表并再次创建它们.我们试图设置错误validateOnMigrate并做了flywayClean,但没有任何帮助.还有另一种方法可以改变吗?

Axe*_*ine 42

outOfOrder是你的朋友.将其设置为true以允许在事后插入这些迁移.

  • `flyway -outOfOrder = true migrate` (5认同)
  • 如何做到这一点? (3认同)

Ale*_*lex 7

从一个git分支切换到另一个git分支并尝试运行时,我遇到了类似的问题 flyway:migrate。例如,当我在分支'release_4.6.0'上时,我的本地计算机上没有从分支'release_4.7.0'进行的迁移,因此我收到下一个错误 FlywayException: Validate failed: Detected applied migration not resolved locally。对我ignoreMissingMigrations有用的解决方案是将flyway选项设置为true。在行家看起来像

flyway:migrate -Dflyway.ignoreMissingMigrations=true
Run Code Online (Sandbox Code Playgroud)

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

在这里您可以找到更多详细信息:https : //flywaydb.org/documentation/commandline/migrate#ignoreMissingMigrations


Har*_*rsh 6

spring.flyway.ignore-missing-migrations=true 如果您使用的是 spring-boot,只需添加到您的属性文件中。

这将忽略以前的迁移。


小智 6

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

spring.flyway.out-of-order=true
Run Code Online (Sandbox Code Playgroud)