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

SpringBoot连接H2数据库时DDL执行与数据插入报错求助

问题解决:H2数据库创建USER表SQL语法错误

根本原因

H2数据库中USER是内置保留关键字,直接用它作为表名会违反SQL语法规范,导致DDL执行失败、插入数据时无法准备SQL语句。删除初始化代码后程序暂时无报错,是因为此时未触发实际的表创建/数据操作,但后续通过接口操作数据库时仍会出现相同问题。

解决方案

方案1:修改实体类表名(推荐)

在User实体类上添加@Table注解,指定一个非关键字的表名(比如users或app_user):

@Entity
@Table(name = "users") // 替换为非关键字表名
public class User {
    // 原有代码保持不变
}

方案2:强制转义表名(兼容性差,不推荐)

如果必须使用user作为表名,可通过转义方式让H2识别为普通标识符,在@Table中使用带双引号的表名:

@Entity
@Table(name = "\"user\"") // 用双引号包裹表名
public class User {
    // 原有代码保持不变
}

验证修改

修改后恢复Application.java中的初始化代码,重新启动程序:

  • Hibernate会生成正确的DDL语句(例如create table users (...))
  • 初始化数据的插入操作可正常执行
  • 通过/users接口查询或新增数据不会再出现语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:10:42