1、參數(shù)作用max_allowed_packet參數(shù)是指mysql服務(wù)器端和客戶端在一次傳送數(shù)據(jù)包的過程當(dāng)中最大允許的數(shù)據(jù)包大小。如果超過了設(shè)置的最大長度,則會(huì)數(shù)據(jù)庫保持?jǐn)?shù)據(jù)失敗。2、問題場景● 有時(shí)候業(yè)務(wù)的需要,可能會(huì)存在某些字段數(shù)據(jù)長度非常大(比如富文本編輯器里面的內(nèi)容),造成插入和更新數(shù)據(jù)庫會(huì)被max_allowed_packet 參數(shù)限制掉,導(dǎo)致數(shù)據(jù)庫操作失敗。● 將本地?cái)?shù)據(jù)庫遷移到遠(yuǎn)程數(shù)據(jù)庫時(shí)運(yùn)行sql錯(cuò)誤。錯(cuò)誤信息是max_allowed_packet會(huì)看到如下的報(bào)錯(cuò)信息:Packet for query is too large (20682943>1048576). You can change this value on the server by setting the max_allowed_packet’ variable.
這個(gè)時(shí)候需要設(shè)置max_allowed_packet參數(shù)的大小,從而滿足業(yè)務(wù)數(shù)據(jù)的保存,當(dāng)然設(shè)置的大小要根據(jù)實(shí)際的業(yè)務(wù)需要,并不是越大越好,要設(shè)置合理的數(shù)據(jù)長度。https://www.jb51.net/article/268311.htm3、查詢當(dāng)前數(shù)據(jù)庫設(shè)置的大小查詢當(dāng)前數(shù)據(jù)庫設(shè)置情況,下面兩種查詢SQL均可以show variables like '%max_allowed_packet%’; select @@max_allowed_packet;
set global max_allowed_packet = 500 * 500 * 1024;4、如何調(diào)整配置4.1 通過修改配置文件,需要重啟mysql(推薦)● Linux 操作系統(tǒng) 修改my.cnf 文件vim /etc/my.cnf [mysqld] max_allowed_packet = 100M
● Windows 5.7解壓版一般都是修改 my.ini 文件[mysqld] max_allowed_packet = 128M
4.2 命令行方式(不推薦)mysql> set global max_allowed_packet = 100 * 1024 * 1024; mysql> exit [root@localhost opt]# [root@localhost opt]# mysql -uroot mysql> mysql> select @@max_allowed_packet; +----------------------+ | @@max_allowed_packet | +----------------------+ | 104857600 | +----------------------+ 1 row in set (0.00 sec)
mysql>
● 通過命令行方式修改時(shí),不能用M、G,只能這算成字節(jié)數(shù)設(shè)置。使用配置文件修改才允許設(shè)置M、G單位。● 命令行修改之后,需要退出當(dāng)前回話(關(guān)閉當(dāng)前mysql server鏈接),然后重新登錄才能查看修改后的值。通過命令行修改只能臨時(shí)生效,如果下次數(shù)據(jù)庫重啟后對(duì)應(yīng)的配置就會(huì)又復(fù)原了,因?yàn)橹貑⒌臅r(shí)候加載的是配置文件里面的配置項(xiàng)。● max_allowed_packet 最大值是1G(1073741824),如果設(shè)置超過1G,查看最終生效結(jié)果也只有1G。優(yōu)秀干貨作者推薦 IT技術(shù)分享社區(qū) CSDN:https://blog.csdn.net/xishining 個(gè)人博客網(wǎng)站:https://
|