1. 程式人生 > >MYSQL報錯“Packets larger than max_allowed_packet are not allowed”

MYSQL報錯“Packets larger than max_allowed_packet are not allowed”

BLOB (binary large object),二進位制大物件,是一個可以儲存二進位制檔案的容器。在計算機中,BLOB常常是資料庫中用來儲存二進位制檔案的欄位型別。
BLOB是一個大檔案,典型的BLOB是一張圖片或一個聲音檔案,由於它們的尺寸,必須使用特殊的方式來處理(例如:上傳、下載或者存放到一個數據庫)。根據Eric Raymond的說法,處理BLOB的主要思想就是讓檔案處理器(如資料庫管理器)不去理會檔案是什麼,而是關心如何去處理它。但也有專家強調,這種處理大資料物件的方法是把雙刃劍,它有可能引發一些問題,如儲存的二進位制檔案過大,會使資料庫的效能下降。在資料庫中存放體積較大的多媒體物件就是應用程式處理BLOB的典型例子。 


mysql BLOB型別 


MySQL中,BLOB是個型別系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,這幾個型別之間的唯一區別是在儲存檔案的最大大小上不同。 
  MySQL的四種BLOB型別 
  型別 大小(單位:位元組) 
  TinyBlob 最大 255 
  Blob 最大 65K 
  MediumBlob 最大 16M 
  LongBlob 最大 4G 


linux修改etc/my.cnf 
[mysqld] 

max_allowed_packet = 16M //不同於[mysqldump]下的max_allowed_packet 

以上為轉載內容,還有說設定my-large.ini、my-small.ini、my-medium.ini、my-huge.ini4個檔案的

一開始不明白,在4個檔案裡搜尋max_allowed_packet,在mysqld和mysqldump分類下分別找到了max_allowed_packet,預設為1M、16M

仔細琢磨才知道[mysqld] 應該是代表了分類,分別對應於某個下面的設定。把4個檔案下的mysqld分類中的max_allowed_packet全設定16M,重啟

服務後沒有生效。

但是後來研究半天才知道自己SB了,這些ini只是MySQL提供的可參考的配置檔案,具體的配置是my.ini。

最後將max_allowed_packet = 16M  拷貝到my.ini中的mysqld分類下,重啟服務,可以了。