MySQL Case-max_allowed_packet过小是否会截取sql文本

问题描述

insert into t1 values('aa','bb','cc;cc','dd');

单条语句脚本source执行成功。但是如果几百万条数据,在source的时候却执行到一段数据库后就会出现报错:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your  server version for the right syntax to use near cc,dd at line 1.

如果你是,这个问题你的第一思路是什么?和max_allowed_packet有关?我的判断是语意语法这关还没过,肯定是SQL文件有问题,而有的朋友判断是和max_allowed_packet设置过小有关,那么我们带着这样的疑问来测试下吧!!

mysql> set global max_allowed_packet = 2;
Query OK, 0 rows affected, 2 warnings (0.06 sec)

退出,编写一个大的sql文本执行,可以看到报如下错误

那么答案已经有了,根据SQL的执行顺序,首先是要校验语意语法的,这只是一段硬代码的校验,还涉及不到server层,

这个问题比较简单,首先你要对SQL执行顺序非常了解!

这个问题的排查思路

检查SQL文本,看是否有特殊字符,中文分号等等。

请使用浏览器的分享功能分享到微信等