max_allowed_packet設置問題


最近在運行的項目出現了一個線上事故,有人反映商城的東西下不了單了,到后台看了一下,果然報了一個錯

Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1046 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.; ]; Packet for query is too large (1046 > 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 (1046 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.

其實上面的報錯信息就給出了解決方案了,原來mysql根據配置文件會限制server接受的數據包大小。如果一次插入數據庫中的數據太大的話就會失敗,官方也有這方面的介紹 官方介紹
用命令行查看show VARIABLES like '%max_allowed_packet%';果然max_allowed_packet太小了

解決方法

1、修改配置文件(推薦)
在mysql中的my.ini文件中(在programdata隱藏文件中),修改max_allowed_packet的值
比如:max_allowed_packet=20M
然后重啟mysql就可以

2、命令行中設置
set global max_allowed_packet = 210241024*10 然后退出命令行后再登錄查看show VARIABLES like '%max_allowed_packet%'
但是這個方法沒什么用,因為重啟mysql服務后這個方法就失效了


又出現問題了,過了幾天max_allowed_packet又被改了,經排查可能是數據庫被入侵了,原來數據庫的密碼太過於簡單,改成了復雜的密碼后再也沒出現這個問題了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM