1. 程式人生 > >com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1169 > 1024)

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1169 > 1024)

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1169 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.

; SQL []; Packet for query is too large (1169 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.; nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1169 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.

進入到檢視資料庫,執行如下命令:

show VARIABLES like '%max_allowed_packet%';

太小導致出錯。

在linux下,進入到mysql安裝目錄下:

進入到:

/usr/local/mysql,找到my.cnf,增加一行

max_allowed_packet = 20M

故障現象:資料儲存的時候報ERROR: Packet for query is too large (2034> 1024). You can change this value on the server by setting the max_allowed_packet' variable.

排查過程:從報錯看是 mysql的 max_allowed_packet引數值設定太少了,用show VARIABLES like '%max_allowed_packet%';檢視,顯示的是1024,這當然就有問題了,超過1024就存不了,於是在/etc/my.cnf檔案中【mysqld]下面加上max_allowed_packet=10M,執行service mysql restart ,再用show VARIABLES like '%max_allowed_packet%'查,生效了!再觀察資料儲存也沒問題了!以為問題就此解決,結果是第二天發現又報這個錯,用show VARIABLES like '%max_allowed_packet%'檢視,奇怪了,有變成1024了!好煩心!繼續查資料,說是記憶體不足的問題,導致MySQL自動重新設定引數,於是top檢視,發現 Java佔了 3.2G,mysql佔了600+M,總共4G,的確有可能!於是把jvm的-Xms設定為2G,再觀察幾天,這次真的解決了!

經驗教訓:不要把一臺伺服器的記憶體都用光了,要預留多點記憶體,另外mysql和Java程式最好分開部署。

重啟mysql:

service mysql restart

然後在查詢:

好了,解決了!

重啟mysql語句:

一、啟動方式 1、使用 service 啟動:service mysqld start 2、使用 mysqld 指令碼啟動:/etc/inint.d/mysqld start 3、使用 safe_mysqld 啟動:safe_mysqld& 二、停止 1、使用 service 啟動:service mysqld stop 2、使用 mysqld 指令碼啟動:/etc/inint.d/mysqld stop 3、 mysqladmin shutdown  三、重啟 1、 使用 service 啟動:service mysqld restart 2、使用 mysqld 指令碼啟動:/etc/inint.d/mysqld restart 提問 編輯摘要 如何啟動/停止/重啟MySQL 一、 啟動方式 1、使用 service 啟動:service mysqld start 2、使用 mysqld 指令碼啟動:/etc/inint.d/mysqld start 3、使用 safe_mysqld 啟動:safe_mysqld& 二、停止 1、使用 service 啟動:service mysqld stop 2、使用 mysqld 指令碼啟動:/etc/inint.d/mysqld stop 3、 mysqladmin shutdown 三、重啟 1、使用 service 啟動:service mysqld restart 2、使用 mysqld 指令碼啟動:/etc/inint.d/mysqld restart