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

Spring Web应用编译报错:MySQLSyntaxErrorException SQL语法错误

解决MySQLSyntaxErrorException: 关键字procedure导致的SQL语法错误

嘿,这问题我太熟了!你碰到的这个语法错误,核心原因一眼就能看出来:procedure是MariaDB/MySQL的保留关键字,你直接把它用作表名(或者在SQL语句里没转义就用了),数据库解析器根本搞不清你到底是要操作名为procedure的表,还是要调用存储过程,自然就报错了。

具体修复方案

我给你几个不同场景下的解决办法,你对应自己的情况来选:

  • 如果是手动写SQL语句:
    把用到procedure的表名用反引号(`)包裹起来,让数据库明确这是一个表名,比如修改后的ALTER语句应该是:

    ALTER TABLE `procedure` ADD COLUMN id_procedure varchar(255) not null;
    
  • 如果是用JPA/Hibernate自动生成DDL:
    给你的实体类添加@Table注解时,用反引号包裹表名,示例代码如下:

    @Entity
    @Table(name = "`procedure`") // 这里用反引号转义关键字
    public class ProcedureEntity {
        @Column(name = "id_procedure")
        private String idProcedure;
        // 其他字段、getter/setter等代码
    }
    
  • 最优实践(推荐):
    尽量别用数据库的保留关键字当表名或字段名,比如把表名改成app_procedure或者procedures,这样后续开发中就不用再处理转义的问题,也能避免其他潜在的语法冲突。

额外排查点

你可以检查一下自动生成的DDL语句(如果是ORM框架生成的话),确认是不是实体类对应的表名确实是procedure,这几乎是触发这个错误的唯一原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:22:52