Mysql报语法错误,排查竟然花了一个钟!!!!

发布时间 2023-12-26 11:21:36作者: 下午喝什么茶

背景:最近协助远程同事开发一个功能,我调用同事写的接口,发现报错,,同事正在处理其他事情,暂时无暇顾及。遂自行解决。查看日志发现,发现一个inser语句报语法错误。

解决过程:
1、找到报错的日志,查看sql。如果没有,打开mybatis-plus日志输出。

2、将sql复制出来在mysql客户端模拟执行,发现sql亦报同样的错误。

3、遂仔细查看sql,核对数据库字段,类型,mapper文件,jav代码。未发现异常,大部分代码都是自动生成的,也不会出错。

4、花了将近一个小时,才破案:

sql如下:

INSERT
    INTO
    table( xxx1,
    xxx2,
    xxx3,
    xxx4,
    `desc`)
VALUES ( 'aaa',
'bbb',
'ccc',
'ddd',
'我是描述' );

重点就是 `desc` 字段。

desc是MySQL的保留字,一般不建议使用它。但是,如果您仍想将列名设置为“ desc”,则需要使用反引号。反引号表示法是(``)。

因此最后,给java代码设置TableField注解指定映射字段:

 @TableField("`desc`")
 private String desc;

同时在xml的Base_Column_List字段列表中,也要给该字段加上反引号。一般情况下,这个自动生成的代码都会有。