check the manual that corresponds to your MySQL server version for the right syntax to use near

        首先判断自己是在什么情况下报的错,如果是MyBatis的SQL报错的话,建议直接点击目录跳转到MyBatis时SQL报错,避免浪费时间。如果本文能够对你有所帮助的话,还请在评论区多多支持

目录

🍻运行SQL语句、SQL文件等报错

🥂MyBatis时SQL报错


🍻运行SQL语句、SQL文件等报错

🍖问题分析

        一般这种问题都是有两种可能(如果你的问题不是这两种,欢迎评论区补充):SQL语法的问题字段名与SQL的关键字冲突

🥩解决方法

可能性一:sql语法

        先检查一下你的SQL语法是不是书写错误,尤其是不被注意的小方面,比如说注释的语法是#而不是//,如果确定SQL语法肯定没错的话应该就是下一种可能了

可能性二:字段名

        SQL报错的可能有两种,一个就是上面所说的SQL语法有误,另一个可能就是你查询语句的字段名是mysql保留的关键字,可以去官这篇博客查看Mysql 关键字及保留字,这个问题的话修改表中字段值名即可。

🥂MyBatis时报错

🥝问题引入

        想要在MyBatis中完成对指定表的指定字段的指定顺序进行排序,这么一看就需要传三个参数供mapper映射文件接收。于是我写了一个mapper接口、mapper映射文件动态拼接SQL语句、一个测试类,运行测试类出现以下报错。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5omO5ZOH5aSq5p6j57OV,size_20,color_FFFFFF,t_70,g_se,x_16

我的代码

这里因为是MyBatis的多参数SQL,于是在对应的mapper接口中使用@Param注解将多个参数一一对应,否则会报错

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5omO5ZOH5aSq5p6j57OV,size_20,color_FFFFFF,t_70,g_se,x_16

🍉问题解决

可能性一:就是我的问题所在

使用#{ }的方式传参的话,MyBatis会对其进行预编译以防SQL注入问题,导致运行的SQL语句中这些传过来的参数都会加上单引号,就像是这个形式

select * from 'product_info' order by 'p_id' 'desc'

而这种SQL语句的运行是有问题的,我们需要的是不带单引号的SQL语句。这时我们可以使用${ }的方式传参,会将传过来的参数直接拼接到SQL语句上,但是无法避免SQL注入

select * from product_info order by p_id desc

这样就可以正常运行了

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5omO5ZOH5aSq5p6j57OV,size_20,color_FFFFFF,t_70,g_se,x_16

可能性二:sql语法

        先检查一下你的SQL语法是不是书写错误,最简单的方法就是将你的SQL语句用具体的值替换掉#{ }引用,复制粘贴到Navicat中的查询中进行运行,看看是否能够正常运行且是自己想要的结果,如果报错的话就检查SQL语法,确保SQL语法没有错误的话可能就是下面的问题

可能性三:字段名

        Navicat查询报错的可能有两种,一个就是上面所说的SQL语法有误,另一个可能就是你查询语句的字段名是mysql保留的关键字,可以去官这篇博客查看Mysql 关键字及保留字,这个问题的话修改表中字段值名即可,如果还不是的话很抱歉不能帮到你😣

你的问题有没有得到解决?到下方评论区交流一下吧⇩ ⇩ ⇩

 最后最后祝愿大家,一辈子不要再见到一个bug!!!! 

f3bff79c797d4a159a76356fe005b640.gif

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扎哇太枣糕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值