【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%'
修改生效后,重新运行程序,程序正常执行不再报此异常。
相关推荐
CoderToy 2020-11-16
emmm00 2020-11-17
王艺强 2020-11-17
ribavnu 2020-11-16
bianruifeng 2020-11-16
wangshuangbao 2020-11-13
苏康申 2020-11-13
vivenwan 2020-11-13
moyekongling 2020-11-13
云中舞步 2020-11-12
要啥自行车一把梭 2020-11-12
aydh 2020-11-12
kuwoyinlehe 2020-11-12
minerk 2020-11-12
vitasfly 2020-11-12
jazywoo在路上 2020-11-11
敏敏张 2020-11-11
世樹 2020-11-11