問題背景:
首先我的項目運用的時Mysql,在做一個數據更新操作的時候,提示異常:System.Exception:“ExecuteNonQuery:Packets larger than max_allowed_packet are not allowed.”,通過查找了網上的一些方案主要是因為本地數據庫運行最大查詢的數據包太小的原因,也正是因為這個運行數據更新一直無法成功,導致后面的操作無法進行。
說明:
一般默認情況下,max_allowed_packet 的包的大小默認時1024*1024(1Mb),你可以首先使用命令:
查詢狀態:show VARIABLES like '%max_allowed_packet%';
我查出的結果是:max_allowed_packet:1024 沒錯這就是問題所在。
解決方法:
使用SQL語句來修改限制(3種推薦方式):
將長度限制設置為32MB:
SET GLOBAL max_allowed_packet=32*1024*1024;
將長度限制設置為1GB(MySQL服務器中允許的最大值):
SET GLOBAL max_allowed_packet=1024*1024*1024;
直接設置會話SET SESSION:
SET SESSION max_allowed_packet=1024*1024*1024;
最后使用上面任何一種方式修改好后重啟一些數據庫,然后在查詢數據包的大小是否改變:
show VARIABLES like '%max_allowed_packet%';
Linux通過編輯my.cnf來修改,windows通過編輯my.ini配置
停止MySQL服務器。
根據自己的數據庫安裝環境進行配置:
windows找到安裝mysql的位置,打開my.ini進行配置修改: max_allowed_packet = 32M Linux 修改的是:my.cnf mysql --help | grep my.cnf 去尋找my.cnf文件 linux下該文件在/etc/下