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

Flyway 6.5.7与Spring Boot 2.5.x版本兼容问题如何解决?

根因说明

Spring Boot 2.5.x 版本的Flyway自动配置组件针对Flyway 7.x及以上版本做了适配,Flyway 7.x新增了flyway.name配置项用于标识迁移实例,Spring Boot 2.5的自动配置逻辑会强制读取该属性注入到Flyway实例中。而你当前使用的Flyway 6.5.7版本不支持该配置项,也没有默认值,就会触发java.lang.IllegalArgumentException: Name must not be null异常。

解决方案

提供两个可选方案:

  • 方案1:升级Flyway到兼容版本
    Spring Boot 2.5.x默认适配的Flyway最低版本为7.7.3,你可以直接在Gradle配置中指定Flyway版本为7.7.3及以上稳定版即可兼容,无需修改其他业务配置。
    Gradle配置示例:
// 在build.gradle的ext配置块中指定flyway版本,覆盖Spring Boot默认管理的版本
ext {
    set('flyway.version', '7.15.0')
}

如果是单独声明Flyway依赖,直接修改依赖声明中的版本号即可。

  • 方案2:保留Flyway 6.5.7版本,补充兼容配置
    如果暂时不需要升级Flyway版本,可以通过以下两种方式之一兼容:
    1. 在配置文件中新增spring.flyway.name配置,赋值任意非空字符串即可绕过空值校验:
      application.properties示例:
    spring.flyway.name=db-migration
    
    application.yml示例:
    spring:
      flyway:
        name: db-migration
    
    1. 如果添加上述配置仍有问题,可以自定义Flyway Bean覆盖Spring Boot的自动配置,避免自动注入不兼容的属性:
    import org.flywaydb.core.Flyway;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import javax.sql.DataSource;
    
    @Configuration
    public class FlywayCustomConfig {
        @Bean
        public Flyway flyway(DataSource dataSource) {
            return Flyway.configure()
                    .dataSource(dataSource)
                    .locations("classpath:db/migration")
                    // 补充你原有使用的其他Flyway配置,比如baseline-on-migrate、encoding等
                    .load();
        }
    }
    

优先推荐方案1,避免后续出现其他版本兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:24:08