【问题标题】:Issue with Flyway database migration when running same applications running at the same time运行同时运行的相同应用程序时 Flyway 数据库迁移问题
【发布时间】:2018-08-01 19:05:18
【问题描述】:

这是我的应用工作流程。我有一个 springboot 应用程序在 jetty/tomcat 中运行。该应用程序与 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

【问题讨论】:

    标签: spring-boot flyway


    【解决方案1】:

    这是由于在应用迁移后修改了迁移。造成这种情况的一个原因可能是,如果数据库是从 Windows 主机迁移的,并且作为带有自动 CRLF 的 Git 提交的一部分更改了行尾。这一特定原因已在较新版本的 Flyway 中得到解决。

    【讨论】:

    • 我认为这与此无关。我使用的是 Linux 操作系统,sql 语法完全有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 2020-07-06
    • 2020-09-25
    • 2012-08-16
    • 2016-12-12
    • 1970-01-01
    • 2019-03-14
    相关资源
    最近更新 更多