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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: check the manual that corresponds to your MySQL server version for the right syntax to use near

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

🍖问题分析


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


🥩解决方法


可能性一:sql语法


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


可能性二:字段名


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


🥂MyBatis时报错

🥝问题引入


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


image.png


我的代码


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

image.png



🍉问题解决

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

使用#{ }的方式传参的话,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


这样就可以正常运行了

image.png



可能性二:sql语法


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


可能性三:字段名


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


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
16天前
|
安全 关系型数据库 MySQL
Windows Server 安装 MySQL 8.0 详细指南
安装 MySQL 需要谨慎,特别注意安全配置和权限管理。根据实际业务需求调整配置,确保数据库的性能和安全。
87 9
|
4月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
关系型数据库 MySQL 数据库
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
266 0
|
5月前
|
数据采集 关系型数据库 MySQL
大数据-业务数据采集-FlinkCDC The MySQL server is not configured to use a ROW binlog_format
大数据-业务数据采集-FlinkCDC The MySQL server is not configured to use a ROW binlog_format
51 1
|
6月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
477 3
|
6月前
|
网络协议 关系型数据库 MySQL
启动mysql时的异常为:[ERROR] Can‘t start server: Bind on TCP/IP port. Got error: 98: Address already in used
启动mysql时的异常为:[ERROR] Can‘t start server: Bind on TCP/IP port. Got error: 98: Address already in used
|
6月前
|
安全 关系型数据库 MySQL
【Python】已解决:pymysql.err.OperationalError:(2003 “Can’t connect to MySQL server on ‘localhost’ ([WinEr
【Python】已解决:pymysql.err.OperationalError:(2003 “Can’t connect to MySQL server on ‘localhost’ ([WinEr
839 1
|
6月前
|
关系型数据库 MySQL 数据库
2003-Can`t connect to Mysql server on ‘154.8.165.152‘(10038)
2003-Can`t connect to Mysql server on ‘154.8.165.152‘(10038)
|
6月前
|
关系型数据库 MySQL Java
软件开发2003 -Can·t to MySQL server on ‘xxxxxx‘(10038),宝塔初始化安装mysql,远程链接MySql注意事项,开始时服务器是没有放开端口的,宝塔也都开
软件开发2003 -Can·t to MySQL server on ‘xxxxxx‘(10038),宝塔初始化安装mysql,远程链接MySql注意事项,开始时服务器是没有放开端口的,宝塔也都开
|
6月前
|
关系型数据库 MySQL 数据库连接
Cant‘t connect to MySQL server on ‘localhost‘ (10038)
Cant‘t connect to MySQL server on ‘localhost‘ (10038)