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

Spring Boot下data.sql无法加载至H2数据库的问题解决

解决data.sql未加载到H2数据库的问题

问题分析与修复步骤

1. 添加JPA DDL行为配置

你当前的配置未指定spring.jpa.hibernate.ddl-auto,默认情况下Hibernate可能会自动生成表结构,覆盖或跳过data.sql的执行逻辑。添加以下配置:

spring.jpa.hibernate.ddl-auto=none

该配置会禁用Hibernate的自动建表功能,确保Spring Boot执行data.sql中的自定义表结构和数据插入语句。

2. 强制SQL初始化执行

Spring Boot 2.5+版本调整了SQL初始化默认行为,需明确配置初始化模式以保证data.sql被执行:

spring.sql.init.mode=always

此配置会强制应用启动时执行data.sql文件,无需依赖默认条件判断。

3. 修正表名大小写问题

你的data.sql中表名使用了双引号("USERS"),H2数据库中双引号会强制区分大小写,可能导致后续数据插入或表查询失败。建议去掉双引号,统一表名格式:

DROP TABLE IF EXISTS USERS;

CREATE TABLE USERS (
    ID BIGINT auto_increment NOT NULL PRIMARY KEY,
    AGE INTEGER NOT NULL,
    BIRTHDAY DATE,
    COUNTRY CHARACTER VARYING(255),
    EMAIL CHARACTER VARYING(255),
    FIRST_NAME CHARACTER VARYING(255),
    GENDER CHARACTER VARYING(255),
    LAST_NAME CHARACTER VARYING(255),
    PERSON_ID CHARACTER VARYING(255)
);

4. 验证H2连接正确性

启动应用后,通过H2控制台(访问http://localhost:2121/h2-console)连接数据库,确保连接URL为jdbc:h2:mem:testdb,用户名root、密码root,登录后检查是否存在USERS表及对应数据。

完整配置示例

server.port=2121

spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

# 新增初始化配置
spring.jpa.hibernate.ddl-auto=none
spring.sql.init.mode=always

spring.batch.job.enabled=false

内容的提问来源于stack exchange,提问作者Sercan Noyan Germiyanoğlu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:10:57