MySQL server version for the right syntax to use near '' at line 1 问题描述: 线上日志在执行数据库表insert操作时,出现如下异常: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:? You have an error

MySQL server version for the right syntax to use near '' at line 1

问题描述:

线上日志在执行数据库表insert操作时,出现如下异常:

### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:?

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 '' at line 1

问题原因分析:

一般数据库SQL 异常会将sql拼写错误的文本解析错误地点放在near"" 中间引号中,而恰恰这次near语句出现出错地点没有标示,但是可以确定一点就是这个错误一定是sql语句错误造成的。

原因查找:

原因分析唯一可以确定的就是这个sql 拼写一定是错误的,那么是一定要查看源码拼写是否正确。

代码如下:

public String batchSave(Mapparams) {

Collectioncollection = (Collection)params.get("collection");

StringBuffer buffer = new StringBuffer("insert into sem_creative(id, platCreativeId, platPlanId, platAdgroupId, planId, adgroupId, " +

"title, desc1, desc2, pcDestinationUrl, pcDisplayUrl, mobileDestinationUrl, mobileDisplayUrl," +

"pause, status, valid, accountId, platform, opstatus, creator, createTime) values");

for(Creative c : collection) {

buffer.append("(").append(c.getId()).append(",")

.append(StringUtil.emptyToNULL(c.getPlatCreativeId())).append(",")

.append(StringUtil.emptyToNULL(c.getPlatPlanId())).append(",")

.append(StringUtil.emptyToNULL(c.getPlatAdgroupId())).append(",")

.append(c.getPlanId()).append(",")

.append(c.getAdgroupId()).append(",")

.append(StringUtil.emptyToNULL(c.getTitle())).append(",")

.append(StringUtil.emptyToNULL(c.getDesc1())).append(",")

.append(StringUtil.emptyToNULL(c.getDesc2())).append(",")

.append(StringUtil.emptyToNULL(c.getPcDestinationUrl())).append(",")

.append(StringUtil.emptyToNULL(c.getPcDisplayUrl())).append(",")

.append(StringUtil.emptyToNULL(c.getMobileDestinationUrl())).append(",")

.append(StringUtil.emptyToNULL(c.getMobileDisplayUrl())).append(",")

.append(c.getPause()).append(",")

.append(c.getStatus()).append(",")

.append(c.getValid()).append(",")

.append(c.getAccountId()).append(",")

.append(c.getPlatform()).append(",")

.append(c.getOpstatus()).append(",")

.append(StringUtil.emptyToNULL(c.getCreator())).append(",")

.append(StringUtil.emptyToNULL(c.getCreateTime().toString())).append("),");

}

buffer.deleteCharAt(buffer.length()-1);

return buffer.toString();

}

?这里可以看到SQL语句,拼写是正确的,其中每个value值,对于空值的处理也正确。那为什么会报错呢?

等等,一定有哪里出错了!

for(Creative c : collection) {

?再看看这行代码,如果这个的集合类为空,会怎么样呢?这个一下错误就找到了,在collection为空的情况下,返回的SQL语句就只有前半句,执行就会报上述所描述错误。

问题追踪:

这个地方在一般情况下没有报错,也很少出现;那么为什么这次会出现呢?

这个地方还是得从源码入手

public final void syncUpload(String filePath, int segment) throws Exception{

if(segment > MAX_SEGMENT) {

throw new IllegalArgumentException("分段上传数据量过大!");

}

if(segment <= 0) {

this.segment = DEFAULT_SEGMENT;

}

CSVReadercsvFileReader = getCSVReader(filePath);

Iteratorit = csvFileReader.iterator();

List segmentList = new ArrayList();

while(true) {

try {

while(it.hasNext()) {

if(segmentList.size() == this.segment) {

try {

syncBatchSave(segmentList);

}catch(Exception e) {

logger.error("批量添加异常: ", e);

}

segmentList = new ArrayList();

}

E e = it.next();

segmentList.add(parse(e));

}

}catch(Exception e) {

logger.error("CSV文件解析异常: ", e);

continue;

}

break;

}

syncBatchSave(segmentList);

}

?这里传入的segmentList看不会为空,但是parse(e)抛出异常时,则会在插入传入的集合不为null,但是集合的 size为0,所以在如上拼写SQL语句时,就会出现更新异常。

总结:

1.在接口的传入参数,一定要做边界校验,比如判空或者最大最小判断(如果集合大小超过20W也会出现异常);

2.团队代码规范中,要整理出代码规范要点,并每周定时review,对于不符合基本要求规范的惩罚5元团队建设基金;

1 楼

Engberber

22 小时前

今日决定将以前遇到的问题以及处理方式做一个分享

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql near_MySQL server version for the right syntax to use near '' at相关推荐

  1. MySQL遇到check the manual that corresponds to your MySQL server version for the right syntax错误

    用MySQL新建了一个Order表,插入了一条数据.总是显示 You have an error in your SQL syntax; check the manual that correspon ...

  2. MySQL check the manual that corresponds to your MySQL server version for the right syntax错误

    地化GO的时候一直遇到一个错误就是check the manual that corresponds to your MySQL server version for the right syntax ...

  3. 一篇文章让你解决sql报错check the manual that corresponds to your MySQL server version for the right syntax to

    一篇文章让你解决sql报错 反馈 因为这一个问题,找到了很多类似问题,你在看到这篇博客时,可能不是这个,但是一定是下面其中一个: Mysql错误:check the manual that corre ...

  4. Mysql错误check the manual that corresponds to your MySQL server version for the right syntax

    数据库表字段与SQL关键字冲突导致的错误 错误信息为:check the manual that corresponds to your MySQL server version for the ri ...

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

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

  6. check the manual that corresponds to your MySQL server version for the right syntax to use near异常原因

    check the manual that corresponds to your MySQL server version for the right syntax to use near异常原因 ...

  7. mapper文件报错:corresponds to your MySQL server version for the right syntax to use near ‘)VALUES( ‘

    错误描述:Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL ...

  8. check the manual that corresponds to your MySQL server version for the right syntax to use near (0)

    问题 在使用Navicat从mysql数据库导出sql后,在其他数据库中执行该sql语句时,报了以下错误 > 1064 - You have an error in your SQL synta ...

  9. MySQL server version for the right syntax to use near ‘SE_SPECIFIC

    今天用navicat15同步阿里数据库数据,报了 [ERR] 8> 1064 - You have an error in your SQL syntax; check the manual t ...

最新文章

  1. 适合初学者快速入门的Numpy实战全集
  2. raw input()和input区别
  3. linux十大证书,验证Linux上的X.509证书
  4. 专为专业音乐行业从业人员打造的AI智能编曲工具:Orb Producer Suite Mac
  5. App Store审核标准
  6. 联想ThinkPad E15 2021款 酷睿版怎么样?测评值得买吗?
  7. 基于STM32F103C8T6的74HC595驱动8位数码管模块学习
  8. Python金融大数据分析——第11章 统计学(2)投资组合优化 笔记
  9. 超越极限——2009年度DDR3内存横向测试(图)
  10. matlab中点乘与乘的区别
  11. 【笔记整理】通信原理第七章复习——数字信号的最佳接受
  12. 这次彻底读透 Redis
  13. 将查询好的快递单号以及物流导出EXCEL表格
  14. C++ 标准库之typeid
  15. 【C#】身份证识别(三):身份证信息识别
  16. 林书豪028-三人的回应
  17. 微信小程序授权登录(获取手机号及用户信息)
  18. java文件名 目录名或卷标语法不正确_大神求解,IO报错文件名、目录名或卷标语法不正确...
  19. ESP8266-01S型号WIFi模块学习使用笔记
  20. 【解决方案】气象局如何通过国标GB28181协议视频平台搭建一套气象灾害预警视频监控系统解决方案?

热门文章

  1. linux项目6rpm软件包的管理,Linux下rpm软件包的管理
  2. 暗云III木马技术分析
  3. jquery 可编辑表格
  4. 域名规范:大型互联网公司标准域名命名
  5. 新浪微博最新 SDK 编程思路
  6. 学生网站模板棕色蛋糕甜品网站设计——棕色蛋糕甜品店(4页) 美食甜品网页制作期末大作业成品_生鲜水果网页设计期末作业
  7. element plus 使用v-loading报错解决Can‘t resolve ‘element-plus/es/components/loading-directive/style/index‘
  8. 服务器端的负载均衡和客户端的负载均衡
  9. python图书馆图书借阅管理系统django项目源码含文档ppt
  10. 计算机操作系统_银行家算法