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

Spring Boot 2.5.0集成JPA+H2 使用data.sql初始化提示表不存在

问题根因

Spring Boot 2.5.0版本对数据源初始化逻辑做了默认调整:原生数据源脚本(data.sql、schema.sql)的执行时机,默认早于Hibernate的DDL自动建表操作。你移除data.sql时Hibernate能正常建表,加上data.sql后脚本先执行,此时表还未创建,就会抛出表不存在异常。
另外你的data.sql存在语法问题:H2数据库默认双引号用于识别表名、字段名等标识符,字符串值需要用单引号包裹,否则后续也可能抛出语法错误。

解决方案(任选一种即可)
  • 方案1:调整初始化顺序(最便捷)
    在application.yml中添加配置,让Hibernate先完成建表再执行data.sql:
spring:
  jpa:
    defer-datasource-initialization: true

同时修正data.sql的字符串引号:

INSERT INTO BUSINESS_SUMMARY VALUES (1, 'ALM470', 'B48', 3);
  • 方案2:使用Hibernate专属初始化脚本
    不需要修改配置,将data.sql重命名为import.sql,Hibernate执行完DDL建表后会自动执行该脚本插入数据,注意同样要修正字符串引号。
  • 方案3:全手动控制表结构创建
    关闭Hibernate自动建表,自行通过schema.sql创建表结构,再用data.sql插入数据,添加配置:
spring:
  jpa:
    hibernate:
      ddl-auto: none

新增schema.sql文件编写对应建表语句即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 08:15:04