Spring Boot初始化时未将data.sql数据写入H2数据库问题求助
问题排查与解决方法
导致data.sql数据未写入的核心原因是JPA Hibernate自动建表操作与Spring Boot原生SQL脚本初始化的执行顺序冲突,对应解决步骤如下:
必改配置项
将以下配置添加到你的application.properties中:
# 方式1:完全关闭Hibernate自动建表,仅使用自定义schema.sql、data.sql管理表结构与初始数据 spring.jpa.hibernate.ddl-auto=none # 显式开启SQL脚本初始化,确保脚本执行 spring.sql.init.mode=always
如果需要保留Hibernate根据实体类自动建表的能力,改用以下配置:
# 让SQL脚本初始化推迟到Hibernate建表完成后执行,避免数据被Hibernate清空 spring.jpa.defer-datasource-initialization=true spring.sql.init.mode=always
其他可选排查点
- 确认
schema.sql和data.sql文件存放在src/main/resources根目录下,若存放在子目录需要额外配置spring.sql.init.schema-locations与spring.sql.init.data-locations指定路径 - 确认H2数据库连接配置正确,启动项目后可通过H2控制台直接执行
select * from EMPLOYEE_MODEL_READ验证数据是否存在 - 检查SQL脚本语法是否存在错误,启动日志中若存在
SQLException相关报错可针对性修正SQL语句
内容的提问来源于stack exchange,提问作者vishal patel
相关产品推荐
相关产品推荐

