天天看點

Packets larger than max_allowed_packet are not allowed(mysql資料查詢提示:不允許超過允許的最大資料包)解決方案

問題背景:

   首先我的項目運用的時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/下
      

配置檔案修改完成後重新開機資料庫!

作者:追逐時光者

作者簡介:一個熱愛程式設計,善于分享,喜歡學習、探索、嘗試新事物,新技術的程式猿。

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如果該篇文章對您有幫助的話,可以點一下右下角的【♥推薦♥】,希望能夠持續的為大家帶來好的技術文章,文中可能存在描述不正确或錯誤的地方,歡迎指正、補充,不勝感激 !