我们使用flyway来管理数据库模式版本,我们正面临一个问题.由于我们作为一个团队工作并使用git作为我们的源代码管理,因此在某些情况下,不同的人会在他们自己的本地存储库上更新数据库模式.如果发生这种情况,我们会得到
检测到已解决的迁移未应用于数据库:2016.03.17.16.46"
时间"2016.03.17.16.46"被另一个人添加,之前我已经应用了一些时间戳.如果发生这种情况,我们必须清理所有数据库表并再次创建它们.我们试图设置错误validateOnMigrate并做了flywayClean,但没有任何帮助.还有另一种方法可以改变吗?
Axe*_*ine 42
outOfOrder是你的朋友.将其设置为true以允许在事后插入这些迁移.
从一个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
spring.flyway.ignore-missing-migrations=true
如果您使用的是 spring-boot,只需添加到您的属性文件中。
这将忽略以前的迁移。
小智 6
application.properties如果你想在启动应用程序时应用迁移,你也可以把它放在你的文件中:
spring.flyway.out-of-order=true
Run Code Online (Sandbox Code Playgroud)