Quarkus应用测试环境H2数据源配置报错,请求协助排查
问题解决步骤
核心问题分析
第一个报错是因为你用了普通的H2数据库依赖,而非Quarkus官方的JDBC H2扩展——Quarkus不会自动识别普通H2依赖为JDBC驱动提供者,所以启动测试环境时找不到H2驱动。第二个报错是因为你禁用了JDBC数据源,但Hibernate ORM必须依赖可用的JDBC数据源才能初始化。
具体修复操作
替换H2依赖为Quarkus JDBC扩展
把原来的普通H2依赖替换成Quarkus官方的JDBC H2扩展,确保测试环境能正确加载驱动:<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-jdbc-h2</artifactId> <scope>test</scope> </dependency>移除原来的
com.h2database:H2依赖。移除错误配置
删除你添加的quarkus.datasource.jdbc=false配置,Hibernate需要JDBC数据源才能正常工作。保持原有配置不变
你的application.properties中测试环境的数据库配置是正确的,无需修改:quarkus.datasource.db-kind=oracle quarkus.datasource.username=****_res_test quarkus.datasource.password=******************$v0yoxh quarkus.datasource.jdbc.url=jdbc:oracle:thin:@*****-nat.*****.net:3330:***** %test.quarkus.datasource.db-kind=h2 %test.quarkus.datasource.username=sa %test.quarkus.datasource.password=password %test.quarkus.datasource.jdbc.url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;MODE=PostgreSQL
验证启动
重新执行命令:
./mvnw quarkus:dev -Dquarkus.profile=test
此时Quarkus会自动识别H2 JDBC驱动,测试环境的数据源能正常初始化,Hibernate也能找到对应的数据源完成启动。
内容的提问来源于stack exchange,提问作者grigor martirosyan
相关产品推荐
相关产品推荐

