运行同时运行的相同应用程序时Flyway数据库迁移问题

时间:2018-02-22 02:42:29

标签: spring-boot flyway

这是我的应用工作流程。我有一个在jetty / tomcat中运行的springboot应用程序。该应用程序与MySql / MariaDB的flyway数据库迁移功能集成在一起。

在许多情况下,使用docker-compose(我们想要的副本号实例)在服务器上部署应用程序。

问题是我的应用程序使用Flyway,当Docker启动我的两个服务时,它们在启动速度方面几乎相同,因此它们都尝试将相同的迁移脚本应用于数据库,并且更快成功并且另一个失败(因为它试图在表schema_version中插入与另一个相同的行)。

此类问题的最佳解决方案是什么?

错误记录:

app_webapp.2.5kv8hnbu5myt@sophea-linux |在org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) app_webapp.2.5kv8hnbu5myt@sophea-linux |引起:org.flywaydb.core.api.FlywayException:验证失败。迁移校验和不匹配迁移1519209964095 app_webapp.2.5kv8hnbu5myt@sophea-linux | - >适用于数据库:90265964 app_webapp.2.5kv8hnbu5myt@sophea-linux | - >本地决议:522480574 app_webapp.2.5kv8hnbu5myt@sophea-linux |在org.flywaydb.core.Flyway.doValidate(Flyway.java:11

1 个答案:

答案 0 :(得分:1)

这是因为迁移在应用后已被修改。其中一个原因可能是,如果数据库是从Windows主机迁移的,并且行结尾是作为使用自动CRLF的Git提交的一部分而更改的。这一特定原因已在较新版本的Flyway中得到解决。