MySQL Packet for query is too large 問(wèn)題及解決方法
問(wèn)題描述:
報(bào)錯(cuò)信息:
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ù)配置文件會(huì)限制Server接受的數(shù)據(jù)包大小。有時(shí)候插入、更新或查詢時(shí)數(shù)據(jù)包的大小,會(huì)受 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來(lái)修改(windows下my.ini),在[mysqld]段或者mysql的server配置段進(jìn)行修改。
max_allowed_packet = 20M
如果找不到my.cnf可以通過(guò)
mysql --help | grep my.cnf
去尋找my.cnf文件。
linux下該文件在/etc/下。
2、在mysql命令行中修改
set global max_allowed_packet = 2*1024*1024*10 //這里的數(shù)值為字節(jié)數(shù),這里改為20M,需要重新登陸客戶端起作用
注:在客戶端用命令修改后,只能暫時(shí)起作用,重新啟動(dòng)MYSQL后,會(huì)恢復(fù)原來(lái)的值。
Linux下mysql 報(bào)Packet for query is too large (1040 > 1024)錯(cuò)誤的解決方法
項(xiàng)目之前一直正常運(yùn)行,這幾天突然一直提示查詢出錯(cuò),看了下日志發(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.錯(cuò)誤。百度了解決方法,記錄下解決過(guò)程。
1.原因
查詢數(shù)據(jù)庫(kù)返回的數(shù)據(jù)包太大,超過(guò)了默認(rèn)值。
登錄mysql,在控制臺(tái)輸入一下命令查詢默認(rèn)的max_allowed_packet值,發(fā)現(xiàn)只有1024
show VARIABLES like '%max_allowed_packet%';
2.修改默認(rèn)最大允許包大小
2.1方式一:命令方式
(1).在mysql控制臺(tái)下輸入以下命令,設(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控制臺(tái)下輸入以下命令,編輯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,實(shí)際上是16*1024*1024,并不是期望的20M,于是又查了下,可能是服務(wù)器內(nèi)存容量不夠,因?yàn)閖ava就占了很多,所以mysql可能會(huì)自動(dòng)重設(shè)參數(shù)。所以某些情況下可能是你當(dāng)時(shí)更改完max_allowed_packet參數(shù),過(guò)一段時(shí)間mysql自動(dòng)重設(shè)參數(shù)變?yōu)槟J(rèn)的1024,又出現(xiàn)了同樣的錯(cuò)誤。
相關(guān)文章
推薦沒(méi)有虛擬主機(jī)的小巧的Mysql數(shù)據(jù)庫(kù)備份腳本(PHP)
推薦沒(méi)有虛擬主機(jī)的小巧的Mysql數(shù)據(jù)庫(kù)備份腳本(PHP)...2007-07-07MySQL中將一列以逗號(hào)分隔的值行轉(zhuǎn)列的實(shí)現(xiàn)
這篇文章主要介紹了MySQL中將一列以逗號(hào)分隔的值行轉(zhuǎn)列的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10MySql下關(guān)于時(shí)間范圍的between查詢方式
這篇文章主要介紹了MySql下關(guān)于時(shí)間范圍的between查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Mysql使用concat函數(shù)實(shí)現(xiàn)關(guān)鍵字模糊查詢功能(列表數(shù)據(jù)過(guò)濾含前后端代碼)
在我們的平時(shí)開(kāi)發(fā)中經(jīng)常會(huì)遇到根據(jù)條件過(guò)濾列表數(shù)據(jù)項(xiàng),今天在做自己項(xiàng)目的時(shí)候就遇到了這個(gè)問(wèn)題,正好借著這個(gè)機(jī)會(huì)分享我的思路以及相關(guān)的代碼,對(duì)Mysql使用concat函數(shù)實(shí)現(xiàn)關(guān)鍵字模糊查詢功能感興趣的朋友一起看看吧2023-02-02Windows10下MySQL5.7.31解壓版安裝與卸載方法
這篇文章主要介紹了Windows10下MySQL5.7.31解壓版安裝與卸載,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12linux 之centos7搭建mysql5.7.29的詳細(xì)過(guò)程
這篇文章主要介紹了linux 之centos7搭建mysql5.7.29的詳細(xì)過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05忘記mysql數(shù)據(jù)庫(kù)root用戶密碼重置方法[圖文]
忘記mysql數(shù)據(jù)庫(kù)root用戶密碼重置方法,需要的朋友可以參考下。2011-11-11