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
相关产品推荐
相关产品推荐

