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

Spring Boot项目H2数据库无法通过data.sql初始化静态数据求助

问题解决:data.sql无法填充H2数据库数据

核心问题:表名不匹配

你的data.sql中插入语句使用的表名是LocationEntity,但实体类Location上的@Table注解明确指定了表名为location_entity(全小写下划线命名),H2数据库默认对表名大小写敏感,导致插入语句找不到对应表,因此数据无法填充。

修正步骤

  1. 修改data.sql中的表名,与实体类指定的表名完全一致:
INSERT INTO location_entity (country, st) VALUES ('Brazil', 'Rio de Janeiro');
INSERT INTO location_entity (country, st) VALUES ('USA', 'Texas');
INSERT INTO location_entity (country, st) VALUES ('Japan', 'Hokkaido');
  1. 确认关键配置项(你的配置已包含以下必要项,可直接验证):
    • spring.jpa.defer-datasource-initialization=true:保证JPA完成表创建后再执行data.sql,避免表未创建就执行插入操作
    • spring.sql.init.mode=always:强制应用每次启动都执行数据初始化逻辑
    • spring.sql.init.data-locations=classpath:db/data.sql:确认data.sql文件放在resources/db目录下,路径配置正确

额外验证点

  • 查看启动日志:检查控制台是否有Table not found类的错误提示,这类信息可直接定位表名匹配问题
  • H2控制台验证:启动应用后访问/h2.console,连接数据库后查看location_entity表是否存在,手动执行修正后的SQL语句,确认数据能正常插入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:17:22