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

SpringBoot JPA操作MySQL启动报错:SQL语法错误

问题解决:MySQL语法错误导致项目启动失败

问题场景

定义了如下实体类:

@Entity
@Table(name = "t_planets_tropical")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PlanetsTropical {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String desc;

}

启动项目时触发如下错误(翻译后):

java.sql.SQLSyntaxErrorException: SQL语法有误;请查看对应MySQL服务器版本的手册,了解在'desc varchar(255), primary key (id)) engine=InnoDB'附近使用的正确语法
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.StatementImpl.executeInternal(StatementImpl.java:763)
at com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:648)
at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94)
at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java)
at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:78)
... 省略132个通用栈帧

问题原因

desc是MySQL的保留关键字,直接作为数据库列名使用时会触发语法错误。

解决方案

有三种可行方案:

1. 修改实体类字段名(推荐)

将desc替换为非关键字名称,比如description:

@Entity
@Table(name = "t_planets_tropical")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PlanetsTropical {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String description;

}

2. 保留字段名,用注解转义列名

通过@Column注解指定数据库列名并用反引号包裹,强制MySQL将其识别为普通列名:

@Entity
@Table(name = "t_planets_tropical")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PlanetsTropical {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "`desc`")
    private String desc;

}

3. 全局配置Hibernate自动转义所有标识符

在Spring Boot的配置文件(如application.properties)中添加以下配置,让Hibernate自动对所有数据库标识符(表名、列名)添加引号:

spring.jpa.properties.hibernate.globally_quoted_identifiers=true

内容的提问来源于stack exchange,提问作者Nunyet Calçada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:21:32