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

已升级Spring Boot与Flyway,Flyway仍提示MySQL 8.0版本不兼容

问题解决:Flyway 9.10.1 + Spring Boot 3.0.1 启动报错 Unsupported Database: MySQL 8.0

问题背景

已将Spring Boot升级至3.0.1,同时配置Flyway 9.10.1依赖,但启用Flyway后应用崩溃,报错:

Caused by: org.flywaydb.core.api.FlywayException: Unsupported Database: MySQL 8.0
    at org.flywaydb.core.internal.database.DatabaseTypeRegister.getDatabaseTypeForConnection(DatabaseTypeRegister.java:106) ~[flyway-core-8.5.13.jar:na]

移除Flyway依赖后应用可正常启动,且Flyway官方文档明确支持MySQL 8.0。

问题根源

  1. 依赖版本冲突:Spring Boot 3.0.1的默认依赖管理中,Flyway版本为8.5.13,手动指定的9.10.1未覆盖默认版本,导致运行时加载的是旧版Flyway核心包。
  2. Flyway 9.x架构变更:从Flyway 9开始,数据库适配逻辑不再包含在flyway-core中,需要单独引入对应数据库的支持模块(如MySQL需flyway-mysql)。

解决方案

方案1:统一指定Flyway版本并添加MySQL支持模块(Gradle配置)

通过Spring Boot的依赖扩展统一设置Flyway版本,避免冲突,同时引入MySQL适配模块:

ext {
    set('flywayVersion', '9.10.1')
}

dependencies {
    // Spring相关依赖(保持原有配置)
    implementation("org.springframework.boot:spring-boot-starter-actuator")
    implementation("org.springframework.boot:spring-boot-starter-jooq")
    implementation("org.springframework.boot:spring-boot-starter-mail")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("org.springframework.security:spring-security-oauth2-resource-server")
    implementation("org.springframework.security:spring-security-oauth2-jose")
    implementation("org.springframework.security:spring-security-config")

    // Jooq相关依赖(保持原有配置)
    implementation("org.jooq:jooq:3.17.6")
    implementation("org.jooq:jooq-meta:3.17.6")
    implementation("org.jooq:jooq-codegen:3.17.6")
    jooqGenerator("mysql:mysql-connector-java:8.0.31")
    jooqGenerator('jakarta.xml.bind:jakarta.xml.bind-api:4.0.0')

    // Flyway依赖:使用指定版本的core和mysql模块
    implementation 'org.flywaydb:flyway-core'
    implementation 'org.flywaydb:flyway-mysql'
}

方案2:排除冲突依赖并手动指定版本

如果方案1不生效,可显式排除Spring Boot默认引入的旧版Flyway,再添加指定版本的依赖:

dependencies {
    // ... 其他依赖保持不变

    // Flyway依赖:排除默认旧版本,添加指定版本的core和mysql模块
    implementation('org.flywaydb:flyway-core:9.10.1') {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-flyway'
    }
    implementation('org.flywaydb:flyway-mysql:9.10.1')
}

验证依赖版本

执行Gradle命令检查依赖树,确认Flyway版本已正确更新为9.10.1:

./gradlew dependencies | grep flyway

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:15:43