【问题标题】:Existing Flyway migrations fail validation after upgrade to Spring Boot 2.4.2升级到 Spring Boot 2.4.2 后,现有 Flyway 迁移验证失败
【发布时间】:2021-04-26 22:24:06
【问题描述】:

我刚刚将我的 Spring Boot 应用程序从 2.3.5.RELEASE 升级到了 2.4.2。现在,当我尝试在现有数据库上启动我的应用程序时,Flyway 迁移失败并显示 Validate failed: Migrations have failed validation。没有详细信息或其他消息,只有这一条。通常 Flyway 会通知我校验和不匹配或其他问题,但在这种情况下什么都没有。

我是否错过了一些向后不兼容的更改,无论是在 Spring(Boot)还是在 Flyway 中?如何修复我的迁移?

【问题讨论】:

  • 您是否在 Spring Boot 2.3 中使用了默认版本的 Flyway (6.4)? Spring Boot 2.4 已升级到 Flyway 7.1,因此如果您之前覆盖 Flyway 版本并使用 5.x,则可能需要先使用 Spring Boot 2.3 升级到 Flyway 6.x,然后再升级到 Spring Boot 2.4 和 Flyway 7。在release notes for 2.4.
  • @AndyWilkinson 我回去仔细检查。是的,我在升级之前使用的是 Flyway 6.4.4。无论如何感谢您的建议!
  • 看起来新版本的 Flyway 不再报告“验证失败:迁移验证失败”之外的问题。虽然这并不能帮助我弄清楚升级后失败的原因,但它至少解释了无用的消息。

标签: java spring spring-boot flyway


【解决方案1】:

我在 spring Boot 2.4.2 和 Flyway 上遇到了类似的问题,并出现相同的错误消息“验证失败:迁移验证失败”,但没有更多详细信息。

发生这种情况是因为我的脚本版本号之间存在差距。 我必须在 flyway 配置中添加 ignoreMissingMigrations(true) 以使其再次工作。

不知道为什么这个flyway版本不再报丢失的迁移脚本了……

【讨论】:

  • 设置这个选项可能只是隐藏了真正的问题。问题是 spring boot 2.4.2 中包含的 flyway 版本存在记录验证错误的问题。 flyway 7.2.0 版本修复了它。
【解决方案2】:

Flyway 7.1.0 附带 Spring Boot 2.4。但是,此版本的 Flyway 无法正确记录验证异常 (https://flywaydb.org/documentation/learnmore/releaseNotes)。

我通过在 maven pom.xml 中添加以下代码来临时自行管理此依赖项:

<dependencyManagement>
   <dependencies>
     <dependency>
       <groupId>org.flywaydb</groupId>
       <artifactId>flyway-core</artifactId>
       <version>7.2.1</version>
     </dependency>
   </dependencies>
</dependencyManagement>

【讨论】:

  • 找到问题根源的好提示。
猜你喜欢
  • 2020-07-04
  • 2018-12-27
  • 2023-04-07
  • 2018-12-11
  • 2019-09-13
  • 2019-01-16
  • 2016-04-09
  • 2021-04-24
  • 2018-08-16
相关资源
最近更新 更多