Spring Boot 3.3.0搭配PostgreSQL 16时Flyway连接失败如何解决?
Spring Boot 3.3.0 + Flyway 连接 PostgreSQL 16 解决办法
报错原因
Spring Boot 3.3.0默认集成的Flyway版本(多为9.x系列)不支持PostgreSQL 16.x版本,导致数据库类型识别失败,抛出Unsupported Database异常。
解决步骤
1. 升级Flyway至支持PostgreSQL 16的版本
Flyway从10.0.0版本开始正式支持PostgreSQL 16,需在项目依赖配置中手动指定更高版本,覆盖Spring Boot默认的Flyway版本:
Maven(pom.xml)配置
<properties> <flyway.version>10.15.0</flyway.version> <!-- 选择最新稳定的10.x版本即可 --> </properties>
Gradle(build.gradle)配置
ext { set('flywayVersion', '10.15.0') }
2. 确认PostgreSQL驱动版本兼容性
Spring Boot 3.3.0默认的postgresql驱动版本为42.7.3,完全支持PostgreSQL 16,无需额外修改。若你手动指定过驱动版本,确保版本不低于42.6.0(该版本开始支持PostgreSQL 16)。
3. 检查数据库连接配置
确认application.properties或application.yml中的连接信息无误:
application.properties示例
spring.datasource.url=jdbc:postgresql://localhost:5432/你的数据库名 spring.datasource.username=你的用户名 spring.datasource.password=你的密码 spring.flyway.enabled=true spring.flyway.url=${spring.datasource.url} spring.flyway.user=${spring.datasource.username} spring.flyway.password=${spring.datasource.password}
application.yml示例
spring: datasource: url: jdbc:postgresql://localhost:5432/你的数据库名 username: 你的用户名 password: 你的密码 flyway: enabled: true url: ${spring.datasource.url} user: ${spring.datasource.username} password: ${spring.datasource.password}
4. 清理旧迁移记录并重新执行(可选)
若存在Flyway元数据残留问题,可先清空flyway_schema_history表(注意:此操作会删除所有迁移记录,需谨慎执行),再重新执行迁移:
Maven命令:
mvn flyway:clean flyway:migrate
Gradle命令:
./gradlew flywayClean flywayMigrate
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

