Flyway是否支持Yugabyte JDBC Smart Driver?启动报错求助
Flyway对Yugabyte JDBC Smart Driver的支持问题
我谷歌搜了大量资料都没找到答案,想确认Flyway是否支持Yugabyte JDBC Smart Driver(jdbc-yugabytedb)。启动Spring Boot应用时碰到了这个错误:
Caused by: org.flywaydb.core.api.FlywayException: No database found to handle jdbc:yugabytedb://127.0.0.1:5433/dw_disputes at org.flywaydb.core.internal.database.DatabaseTypeRegister.getDatabaseTypeForUrl(DatabaseTypeRegister.java:54)
配置信息
数据源配置
spring.datasource.url=jdbc:yugabytedb://127.0.0.1:5433/dw_disputes spring.datasource.driverClassName=com.yugabyte.Driver
Flyway使用与上述完全相同的数据源配置。
Maven依赖
<dependency> <groupId>com.yugabyte</groupId> <artifactId>jdbc-yugabytedb</artifactId> <version>42.3.5-yb-4</version> </dependency> <dependency> <artifactId>flyway-core</artifactId> <groupId>org.flywaydb</groupId> <version>10.7.1</version> </dependency> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-database-yugabytedb</artifactId> <version>10.7.0</version> </dependency>
调试时发现Flyway的数据库类型注册器无法识别jdbc:yugabytedb协议。
解决方案
Flyway是支持Yugabyte JDBC Smart Driver的,你遇到的问题核心是依赖版本不匹配:
- Flyway Core版本为10.7.1,但Yugabyte适配依赖
flyway-database-yugabytedb版本是10.7.0,版本不一致会导致驱动识别逻辑不兼容。 - Yugabyte JDBC Driver基于PostgreSQL驱动修改,也可临时用PostgreSQL适配驱动替代,但更推荐保持版本一致。
具体修复步骤:
- 同步
flyway-database-yugabytedb版本与Flyway Core一致:
<dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-database-yugabytedb</artifactId> <version>10.7.1</version> </dependency>
- 确保Spring Boot自动配置能加载Flyway的Yugabyte适配类,无需额外配置驱动识别规则。
- 若问题仍存在,可显式指定Flyway数据库类型:
spring.flyway.database=org.flywaydb.database.yugabytedb.YugabyteDBDatabaseType
另外,你的JDBC URL格式符合Yugabyte规范(jdbc:yugabytedb://<host>:<port>/<dbname>),无需调整。
内容的提问来源于stack exchange,提问作者Naim
相关产品推荐
相关产品推荐

