Liquibase-Hibernate6执行diff命令报JDBC连接错误,如何解决?
问题原因
这个警告是因为liquibase-hibernate6通过Spring实体类生成数据库元数据时,Hibernate初始化SessionFactory的过程中,会尝试获取JDBC连接查询元数据,但当前referenceUrl的配置里没有提供Hibernate所需的JDBC连接参数。虽然Liquibase本身已经通过配置的JDBC连接完成了实体与数据库的差异对比并生成了变更日志,但Hibernate内部逻辑仍会因缺少连接配置抛出警告。
修复方法
方法1:在referenceUrl中补充Hibernate连接参数
直接在referenceUrl里添加和实际数据库一致的JDBC连接属性,让Hibernate能获取到合法连接,消除警告:
referenceUrl=hibernate:spring:ir.renglab.forum.domain?dialect=org.hibernate.dialect.PostgreSQLDialect&hibernate.connection.url=jdbc:postgresql://localhost:5432/forum&hibernate.connection.username=postgres&hibernate.connection.password=123456&hibernate.connection.driver_class=org.postgresql.Driver
方法2:对齐Liquibase与liquibase-hibernate6版本
Spring Boot 3.1.3默认集成的Liquibase版本是4.23.2,建议将liquibase-hibernate6的版本改为与Liquibase一致,减少依赖冲突:
<dependency> <groupId>org.liquibase.ext</groupId> <artifactId>liquibase-hibernate6</artifactId> <version>${liquibase.version}</version> </dependency>
方法3:为Maven插件添加连接池依赖
如果上述方法无效,可在liquibase-maven插件的依赖中添加Spring Boot默认的Hikari连接池,确保Hibernate能获取连接池支持:
<plugin> <groupId>org.liquibase</groupId> <artifactId>liquibase-maven-plugin</artifactId> <version>${liquibase.version}</version> <configuration> <propertyFile>src/main/resources/liquibase/config/liquibase.properties</propertyFile> </configuration> <dependencies> <dependency> <groupId>org.liquibase.ext</groupId> <artifactId>liquibase-hibernate6</artifactId> <version>${liquibase.version}</version> </dependency> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>${hikari.version}</version> </dependency> </dependencies> </plugin>
验证
修改配置后重新执行命令:
mvn liquibase:diff
警告应会消失,变更日志仍可正常生成。
内容的提问来源于stack exchange,提问作者Mehdi Rahimi
相关产品推荐
相关产品推荐

