从版本 3 更新到 4 时,Flyway 更新不会迁移 schema_version 表

Posted

技术标签:

【中文标题】从版本 3 更新到 4 时,Flyway 更新不会迁移 schema_version 表【英文标题】:Flyway update does not migrate schema_version table when updating from version 3 to 4 【发布时间】:2018-09-19 16:48:50 【问题描述】:

我从 Spring Boot 1.5 更新到 2。和其他人一样,我也面临这样的问题,即通过更新 Flyway 也从 3 更新到 5。Flyway 更新的问题是 flyway 模式表没有得到自动迁移,因此数据库迁移不起作用。

Spring Boot migration guide 建议先更新到 Flyway 4,然后再更新到 Spring Boot 2。我按照建议做了并包含了

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
</parent>
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>4.0</version>
</dependency>

进入我的 POM。 Flyway 表示您只需要运行应用程序即可应用从版本 3 到 4 的迁移。当我启动应用程序时,一切正常(没有错误)但是 Flyway 的模式表没有迁移。我仍然看到其中应该被迁移删除的列(version_rank)。

我现在的问题:我需要做什么才能触发 Flyway 迁移?

更新: 感谢@M。天命!他的评论给了我解决问题的提示。如果你遇到类似的问题:搜索你的工作区,如果你用 flyway 做一些会绕过 Spring Boot 自动配置的事情。

【问题讨论】:

如前所述,非常明确地,在文档中您应该升级到4.2.0,您正在使用4.0。基本上,您升级到的版本太低,初始迁移实际上无法成为 Flyway 本身的一部分。 我现在用 4.2.0 试过了——同样的问题:没有架构表的迁移。 您可能还想升级到最新的 1.5.x 版本的 Spring Boot,旁边确保您实际上并没有自己初始化或使用 Flyway,因为这会绕过 Spring Boot 自动配置和执行飞行路线。 @M.Deinum 请添加您的解决方案作为答案:cmets 用于提出问题、澄清要点、警告潜在陷阱等 【参考方案1】:

@M.Deinum 提出的问题已解决:

升级到最新的1.5.x版本的Spring Boot,旁边那个make 确保您实际上并没有像那样初始化或使用 Flyway 将绕过 Spring Boot 自动配置和 flyway 的执行。

【讨论】:

以上是关于从版本 3 更新到 4 时,Flyway 更新不会迁移 schema_version 表的主要内容,如果未能解决你的问题,请参考以下文章

Gulp-cli版本没有更新

flyway - 一种分布式的方式?

将 flyway 版本 1.5 升级到 3.2

Flyway的第一次认识

如何将多个sql脚本执行到具有相同版本的flyway中

Flyway 最佳实践:一个大型迁移脚本与多个增量脚本