Spring Boot集成测试H2数据库报错:Schema 'cc'未找到求助
解决Spring Boot集成测试中H2数据库Schema未找到问题
核心问题原因
Hikari连接池初始化时会优先尝试设置spring.datasource.hikari.schema=cc,但此时src/test/resources/schema.sql中的创建语句还未执行(Spring Boot的SQL脚本执行在连接池初始化之后),导致连接池找不到目标Schema报错。
解决方案
1. 修改H2数据库URL,提前创建并指定默认Schema
将src/test/resources/application.properties中的数据库URL修改为:
spring.datasource.url=jdbc:h2:mem:test;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS cc\\;SET SCHEMA cc
注意:分号需要用
\\转义,避免Spring将URL拆分为多个配置项。
2. 移除Hikari的Schema配置
删除application.properties中的以下配置:
spring.datasource.hikari.schema=cc
因为已经在URL中通过SET SCHEMA cc指定了默认Schema,无需重复配置。
3. 保留schema.sql中的语句(可选)
可以保留src/test/resources/schema.sql中的CREATE SCHEMA IF NOT EXISTS cc;,即使重复执行也不会有问题,IF NOT EXISTS会自动跳过已存在的Schema创建。
验证测试
修改配置后重新运行集成测试,H2会在连接初始化阶段就创建并切换到cc Schema,后续schema.sql和测试代码都能正常访问该Schema,不会再出现"Schema 'cc' not found"的错误。
内容的提问来源于stack exchange,提问作者madalin1Q
相关产品推荐
相关产品推荐

