You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Flyway 5.2.4升级至9.0.1遇NoSuchMethodError的解决方法

解决Spring Boot 2.7.0搭配Flyway 9.0.1时的NoSuchMethodError问题

错误原因

报错中的org.flywaydb.core.api.configuration.FluentConfiguration.ignoreMissingMigrations(Z)方法在Flyway 9.x版本中已被移除,而Spring Boot 2.7.0的自动配置类FlywayAutoConfiguration仍在调用该旧方法,导致版本不兼容。

解决方案

方案1:使用Spring Boot 2.7.x兼容的Flyway版本

Spring Boot 2.7.x官方适配的Flyway版本为8.x系列(推荐8.5.13),该版本既支持H2 2.x的语法特性,又能和Spring Boot自动配置完美兼容,无需额外自定义配置。

调整Maven依赖:

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>8.5.13</version>
</dependency>

方案2:强制使用Flyway 9.x并自定义配置

如果业务必须依赖Flyway 9.x的特性,需要绕过Spring Boot的自动配置,手动创建Flyway Bean:

  1. 禁用Spring Boot的Flyway自动配置:
@SpringBootApplication(exclude = FlywayAutoConfiguration.class)
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}
  1. 手动编写Flyway配置类,使用Flyway 9.x的新API替代旧方法:
@Configuration
public class CustomFlywayConfig {
    @Bean
    public Flyway flyway(DataSource dataSource, Environment env) {
        return Flyway.configure()
                .dataSource(dataSource)
                // 迁移脚本路径,可读取原有配置
                .locations(env.getProperty("spring.flyway.locations", "classpath:db/migration"))
                // 替代原ignoreMissingMigrations的配置
                .ignoreMigrationPatterns("*:missing")
                // 根据需求添加其他配置(如baselineOnMigrate、sqlMigrationPrefix等)
                .baselineOnMigrate(true)
                .load();
    }
}

额外检查

  • 执行mvn dependency:tree命令,确保项目中没有引入旧版本的Flyway依赖,避免依赖冲突。
  • 确认H2(2.1.214)与h2gis(2.1.0)的版本兼容,当前搭配是合理的,无需调整。

内容的提问来源于stack exchange,提问作者u4963840

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 13:48:22