1. 程式人生 > >Mysql報Packet for query is too large (1040 > 1024)錯誤

Mysql報Packet for query is too large (1040 > 1024)錯誤

Linux下mysql 報Packet for query is too large (1040 > 1024)錯誤的解決方法

專案之前一直正常執行,這幾天突然一直提示查詢出錯,看了下日誌發現提示Packet for query is too large (1040 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.錯誤。百度瞭解決方法,記錄下解決過程。

1.原因

查詢資料庫返回的資料包太大,超過了預設值。

登入mysql,在控制檯輸入一下命令查詢預設的max_allowed_packet值,發現只有1024

show VARIABLES like '%max_allowed_packet%';

2.修改預設最大允許包大小

2.1方式一:命令方式

(1).在mysql控制檯下輸入以下命令,設定max_allowed_packet為20M

set global max_allowed_packet = 20*1024*1024;

(2).退出mysql,重啟mysql服務,再登入myql中查詢max_allowed_packet是否修改成功

show VARIABLES like '%max_allowed_packet%';

2.2方式二:修改配置檔案my.cnf方式

(1).mysql控制檯下輸入以下命令,編輯my.cnf
sudo vi  /etc/mysql/my.cnf
(2).在[mysqId]下面新增
max_allowed_packet = 20M
2.2退出編輯模式,重啟mysql,步驟如2.1的(2)所示

3.注

配置完查詢max_allowed_packet發現是16777216,實際上是16*1024*1024,並不是期望的20M,於是又查了下,可能是伺服器記憶體容量不夠,因為java就佔了很多,所以mysql可能會自動重設引數。所以某些情況下可能是你當時更改完max_allowed_packet引數,過一段時間mysql自動重設引數變為預設的1024,又出現了同樣的錯誤。