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

遇到问题

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

问题原因

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

解决方案

 1 查询MySQL最大允许接收的数据包
SHOW VARIABLES LIKE '%max_allowed_packet%'


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

 2 修改 MySQL 配置信息

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

max_allowed_packet=20M

 3 重启 MySQL 服务,使步骤2中修改生效
 4 查询MySQL最大允许接收的数据包是否生效
SHOW VARIABLES LIKE '%max_allowed_packet%'

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值