【MySQL】com.mysql.jdbc.PacketTooBigException 异常解决

遇到问题

由于公司业务的扩展,需要博主将之前爬虫所爬取的数据进行导出成文件并打包加密成压缩包,同时在文件接收端进行文件解密解析和数据的入库,中间涉及到ftp传输。
  整个流程图如下(粗略画图):
  【MySQL】com.mysql.jdbc.PacketTooBigException 异常解决
  由于数据量比较大,所以每个Excel文件限制1W条数据,每5个 excel 执行一次打包操作,定时执行。
  前面过程一切正常执行,然而当数据进行分表入库的时候,这里执行了批量插入,控制台报以下异常:
  【MySQL】com.mysql.jdbc.PacketTooBigException 异常解决

问题原因

出现以上异常是因为一次性插入的数据包超过了 MySQL 默认的 server 接受的数据包大小,因此需要调整 MySQL 默认的 server 接受的数据包大小。
  

解决方案

 1 查询MySQL最大允许接收的数据包

SHOW VARIABLES LIKE '%max_allowed_packet%'

【MySQL】com.mysql.jdbc.PacketTooBigException 异常解决
  博主安装使用的MySQL数据库默认允许接收的数据包大小只有4M

 2 修改 MySQL 配置信息

在MySQL的安装目录下的my.ini的最后加入以下信息:

max_allowed_packet=20M

【MySQL】com.mysql.jdbc.PacketTooBigException 异常解决

 3 重启 MySQL 服务,使步骤2中修改生效

 4 查询MySQL最大允许接收的数据包是否生效

SHOW VARIABLES LIKE '%max_allowed_packet%'

【MySQL】com.mysql.jdbc.PacketTooBigException 异常解决

修改生效后,重新运行程序,程序正常执行不再报此异常。

相关推荐