Flyway 10.16.0无法识别MySQL数据库问题排查求助
解决方案
这个错误是因为Flyway无法获取MySQL的适配驱动模块,你需要调整依赖配置,确保Flyway在执行迁移时能访问到所需的依赖:
1. 修正依赖配置
在你的build.gradle.kts的dependencies块中,将flyway-mysql的依赖范围改为runtimeOnly,同时添加MySQL JDBC驱动依赖:
dependencies { runtimeOnly("org.flywaydb:flyway-mysql") runtimeOnly("com.mysql:mysql-connector-j") }
为什么这样改?
implementation范围的依赖仅会被编译类路径包含,而Flyway Gradle插件执行任务时需要依赖在运行时类路径中,runtimeOnly能确保这些依赖被加载到任务的执行环境里。mysql-connector-j是MySQL官方的JDBC驱动,Flyway需要它来建立数据库连接。由于你使用了Spring Boot的依赖管理,不需要手动指定版本,Spring Boot会自动适配兼容的版本。
2. 可选:完善JDBC URL格式
虽然你的URL基本正确,但可以显式指定数据库名(和你配置的defaultSchema一致),避免潜在的路径问题:
flyway { url = "jdbc:mysql://localhost:3310/walletyo" // 其余配置保持不变 }
3. 验证并重新执行
保存配置后,再次运行迁移命令:
./gradlew flywayMigrate --stacktrace
这样Flyway就能正确识别MySQL数据库并执行迁移了。
内容的提问来源于stack exchange,提问作者Jerry
相关产品推荐
相关产品推荐

