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

SpringBoot请假申请系统开发:leave表创建失败问题求助

解决SpringBoot中MySQL无法创建leave表的问题

问题现象

使用SpringBoot开发请假申请系统时,执行DDL创建名为leave的表时报SQL语法错误,错误栈核心信息如下:

Error :
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table leave (id bigint not null auto_increment, end_date date, start_date date, status smallint, employee_id bigint, primary key (id)) engine=MyISAM" via JDBC Statement
...
Caused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'leave (id bigint not null auto_increment, end_date date, start_date date, status' at line 1
...

同时后续添加外键约束时也出现同类语法错误。

问题根源

leave是MySQL的保留关键字,直接将其用作表名时,MySQL的语法校验会判定SQL语句非法,从而抛出错误。

解决方案

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

将表名改为非保留字,比如leave_request、employee_leave等。在对应的实体类上通过@Table注解指定新表名:

@Entity
@Table(name = "leave_request")
public class Leave {
    // 实体类字段...
}

方案2:保留原表名,添加标识符引号

如果必须使用leave作为表名,需要在注解中给表名加上MySQL的反引号(`),让Hibernate生成的DDL语句将表名作为标识符处理,避开保留字冲突:

@Entity
@Table(name = "`leave`")
public class Leave {
    // 实体类字段...
}

此时Hibernate生成的DDL会变成create table leave (...),符合MySQL的语法规范,外键约束也能正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:52:40