You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次使用H2内存数据库测试应用遇Schema 'WORKING'不存在错误求助

排查H2内存数据库"WORKING" Schema不存在问题

1. 核对application.properties配置

确保H2数据库URL的INIT语法正确,重点注意分号转义与默认Schema指定:

spring.datasource.url=jdbc:h2:mem:testdb;INIT=CREATE SCHEMA IF NOT EXISTS WORKING\\;SET SCHEMA WORKING;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

注意:分号需要用\\转义,SET SCHEMA WORKING会强制连接默认使用该Schema

同时检查Flyway相关配置是否指定目标Schema:

spring.flyway.enabled=true
spring.flyway.schemas=WORKING

2. 验证Flyway迁移脚本

  • 脚本命名必须符合Flyway规范:V<版本号>__<描述>.sql(如V1__create_user_table.sql)
  • 脚本开头需明确指定Schema,避免默认Schema不匹配:
CREATE SCHEMA IF NOT EXISTS WORKING;
USE WORKING;

CREATE TABLE USER (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE
);

或者创建表时直接指定Schema:CREATE TABLE WORKING.USER (...)

3. 检查UserEntity实体类配置

确认实体类通过@Table注解指定了目标Schema:

@Entity
@Table(name = "USER", schema = "WORKING")
public class UserEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(nullable = false, unique = true)
    private String username;
    
    // Getters & Setters
}

同时确保实体类所在包被Spring扫描到(@SpringBootApplication的扫描路径需覆盖实体类包)

4. 测试类上下文配置检查

确保UserServiceTest正确加载Spring上下文,未自定义冲突的数据源配置:

@SpringBootTest
class UserServiceTest {
    @Autowired
    private UserService userService;
    
    // 测试方法
}

如果测试类中存在自定义数据源Bean,需同步添加INIT创建Schema的逻辑

5. 用H2控制台直接验证

开启H2控制台,实时查看Schema状态:

spring.h2.console.enabled=true

启动测试后访问http://localhost:8080/h2-console,使用配置中的数据库URL连接,检查是否存在WORKINGSchema及对应表。


内容的提问来源于stack exchange,提问作者Cross

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 10:32:33