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

遇到问题

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

问题缘由

  出现以上异常是由于一次性插入的数据包超过了 MySQL 默认的 server 接受的数据包大小,所以须要调整 MySQL 默认的 server 接受的数据包大小。
  数据库

解决方案

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

SHOW VARIABLES LIKE '%max_allowed_packet%'


  博主安装使用的MySQL数据库默认容许接收的数据包大小只有4M加密

 2 修改 MySQL 配置信息

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

max_allowed_packet=20M

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

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

SHOW VARIABLES LIKE '%max_allowed_packet%'

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

相关文章
相关标签/搜索