Spring Boot项目H2数据库无法通过data.sql初始化静态数据求助
问题解决:data.sql无法填充H2数据库数据
核心问题:表名不匹配
你的data.sql中插入语句使用的表名是LocationEntity,但实体类Location上的@Table注解明确指定了表名为location_entity(全小写下划线命名),H2数据库默认对表名大小写敏感,导致插入语句找不到对应表,因此数据无法填充。
修正步骤
- 修改
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');
- 确认关键配置项(你的配置已包含以下必要项,可直接验证):
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
相关产品推荐
相关产品推荐

