佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > MySQL Packet for query is too large 問題及解決方法

MySQL Packet for query is too large 問題及解決方法

熱門標(biāo)簽:地方門戶網(wǎng)站 AI電銷 網(wǎng)站排名優(yōu)化 呼叫中心市場需求 鐵路電話系統(tǒng) 百度競價排名 Linux服務(wù)器 服務(wù)外包

問題描述:

報錯信息:

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

MySQL根據(jù)配置文件會限制Server接受的數(shù)據(jù)包大小。有時候插入、更新或查詢時數(shù)據(jù)包的大小,會受 max_allowed_packet 參數(shù)限制,導(dǎo)致操作失敗。

查看 max_allowed_packet 參數(shù):

在客戶端執(zhí)行:

show VARIABLES like '%max_allowed_packet%'; 

得到結(jié)果如下:

+--------------------+------------+ 
| Variable_name   | Value  | 
+--------------------+-------------------+ 
| max_allowed_packet | 1024 | 
+--------------------+-------------------+  

修改方法:

1、修改配置文件
可以編輯my.cnf來修改(windows下my.ini),在[mysqld]段或者mysql的server配置段進(jìn)行修改。

max_allowed_packet = 20M

如果找不到my.cnf可以通過

mysql --help | grep my.cnf

去尋找my.cnf文件。

linux下該文件在/etc/下。

2、在mysql命令行中修改

set global max_allowed_packet = 2*1024*1024*10  
//這里的數(shù)值為字節(jié)數(shù),這里改為20M,需要重新登陸客戶端起作用 

注:在客戶端用命令修改后,只能暫時起作用,重新啟動MYSQL后,會恢復(fù)原來的值。

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

項目之前一直正常運(yùn)行,這幾天突然一直提示查詢出錯,看了下日志發(fā)現(xiàn)提示Packet for query is too large (1040 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.錯誤。百度了解決方法,記錄下解決過程。

1.原因

查詢數(shù)據(jù)庫返回的數(shù)據(jù)包太大,超過了默認(rèn)值。
登錄mysql,在控制臺輸入一下命令查詢默認(rèn)的max_allowed_packet值,發(fā)現(xiàn)只有1024

show VARIABLES like '%max_allowed_packet%'; 

2.修改默認(rèn)最大允許包大小

2.1方式一:命令方式

(1).在mysql控制臺下輸入以下命令,設(shè)置max_allowed_packet為20M

set global max_allowed_packet = 20*1024*1024; 

(2).退出mysql,重啟mysql服務(wù),再登錄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發(fā)現(xiàn)是16777216,實際上是16*1024*1024,并不是期望的20M,于是又查了下,可能是服務(wù)器內(nèi)存容量不夠,因為java就占了很多,所以mysql可能會自動重設(shè)參數(shù)。所以某些情況下可能是你當(dāng)時更改完max_allowed_packet參數(shù),過一段時間mysql自動重設(shè)參數(shù)變?yōu)槟J(rèn)的1024,又出現(xiàn)了同樣的錯誤。

標(biāo)簽:蘭州 黃山 仙桃 銅川 衡水 崇左 湘潭 湖南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL Packet for query is too large 問題及解決方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    繁昌县| 焦作市| 剑河县| 江津市| 遵化市| 新兴县| 界首市| 呼和浩特市| 武夷山市| 宁蒗| 繁昌县| 定结县| 社旗县| 榕江县| 同德县| 通渭县| 文水县| 定陶县| 邵阳市| 南雄市| 钦州市| 肇州县| 东明县| 从化市| 肥西县| 泊头市| 洱源县| 安远县| 阿尔山市| 西青区| 澜沧| 泗水县| 宁陕县| 德安县| 泸定县| 许昌县| 福海县| 策勒县| 白河县| 子洲县| 阿克陶县|