【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

相關文章
相關標籤/搜索