我的编程空间,编程开发者的网络收藏夹
学习永远不晚

全网多种方法解决You have an error in your SQL syntax; check the manual that corresponds to your MySQL server

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

全网多种方法解决You have an error in your SQL syntax; check the manual that corresponds to your MySQL server

1. 复现错误


今天在调试低代码的接口,突然报出如下的错误:

在这里插入图片描述

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 'desc,name,is_deleted ) VALUES('测试哈','测试哈','测试项目',1 )' at line 11

于是,查看控制台报出的详细错误信息,如下图所示:

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 'desc,name,is_deleted ) VALUES('测试哈','测试哈','测试项目',1 )' at line 1at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092)at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040)at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1348)at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1025)at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeUpdate(DruidPooledPreparedStatement.java:241)at com.test.AppModelPageService.addData(AppModelPageService.java:904)at com.test.AppModelPageService$$FastClassBySpringCGLIB$$81597048.invoke()at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)at com.test.AppModelPageService$$EnhancerBySpringCGLIB$$40f27572.addData()at com.sugon.cloud.lowcode.controller.AppModelPageController.AddData(AppModelPageController.java:125)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)......

2. 分析错误


java.sql.SQLSyntaxErrorException可知,这是SQL报出的语法错误。

找到打印的SQL日志,如下图所示:

在这里插入图片描述

将红框中的MySQL语句,复制到MySQL控制台中执行,如下图所示:

在这里插入图片描述

我很确定insert into project(remark,desc,name,is_deleted ) VALUES('测试哈','测试哈','测试项目',1 );,该MySQL语句没有语法错误。

那只能考虑该语句中,是不是存在与MySQL关键字冲突的字段了。

仔细一看,desc正是MySQL的关键字,表示降序排列,如下代码所示:

select * from product order by price desc; 

3. 解决错误

由上分析可知,我的SQL语句insert into project(remark,desc,name,is_deleted ) VALUES('测试哈','测试哈','测试项目',1 );中的desc,与MySQL中的desc关键字发生了冲突。

因而,我可以有如下两种方法修改:

  1. 方法一

将我的desc字段修改成其他不与MySQL关键字冲突的字段,比如note等。

  1. 方法二

在上述MySQL语句中的desc上添加反单引号(`),如下代码所示:

mysql> insert into project(remark,`desc`,name,is_deleted ) VALUES('测试哈','测试哈','测试项目',1 );Query OK, 1 row affected (0.01 sec)

在这里插入图片描述

因而,我们在实际开发中,最好将添加、修改、查询等字段,都加上反单引号(`)。

避免与MySQL的关键字发生冲突,从而减少不必要的麻烦。

4. 解决该错误的其他方法


我的错误是因为在insert语句中,出现了与MySQL关键字冲突的字段,在该冲突的字段上加上反单引号,即可解决问题。

如果你的错误不是该原因造成的,可以参考如下解决方法。

  1. 单引号、反单引号分不清

java中键值用单引号(’),列名反单引号(`),比如

ed.insertData("insert into information(`nowtime`,`data`) values(current_time,'A');");

insertData就是负责执行这句SQL语句的,他最后返回受影响的条数,这个不用管。

其中:

  • 列名分别是nowtimedata(这里用反单引号)

  • 写入数据库的值是current_time和字符A(这里用单引号)。

  1. 检查是否真为语法错误

这个一般都能看出来。

  1. 检查语句是否忘记空格

如下这个报错:

int result = ed.insertData("insert "+"into test"    + "values(1) ");

把代码合成一句话执行,就没问题,如下所示:

int result = ed.insertData("insert into test values(1) ");

第一句话的test和后面的values之间没有空格,自然会报错。

读者要注意下你们是不是也是忘记了空格,这个错误经常发生在换行的时候。

因而,短小的SQL语句还是写成一句话比较好,减少bug产生效率。

来源地址:https://blog.csdn.net/lvoelife/article/details/130108739

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

全网多种方法解决You have an error in your SQL syntax; check the manual that corresponds to your MySQL server

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

全网多种方法解决You have an error in your SQL syntax; check the manual that corresponds to your MySQL server

文章目录 1. 复现错误2. 分析错误3. 解决错误4. 解决该错误的其他方法 1. 复现错误 今天在调试低代码的接口,突然报出如下的错误: 即You have an error in your SQL syntax; ch
2023-08-16

You have an error in your SQL syntax; check the manual that corresponds解决方法

You have an error in your SQL syntax; check the manual that corresponds to your mysql server version这种错误主要是由于,使用了现在版本的m
2023-02-05

pycharm中的python与mysql(1064):“You have an error in your SQL syntax; check the manual that corresponds

一、报错信息及代码 1064, “You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version fo
2023-08-16

Mysql出现问题:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corres解决方案

回城传送–》《数据库问题解决方案》 ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。Java领域优质创作者?,CSDN博客专家?,华为云享专家?,掘金年度人气作者?,阿里云专家博主?,51CTO专家博主? ❤️技
2023-08-30

编程热搜

目录