遇到问题
由于公司业务的扩展,需要博主将之前爬虫所爬取的数据进行导出成文件并打包加密成压缩包,同时在文件接收端进行文件解密解析和数据的入库,中间涉及到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%'
修改生效后,重新运行程序,程序正常执行不再报此异常。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。