MySQL / MariaDB 修改資料插入上限 max_allowed_packet

在 MySQL / MariaDB 插入資料時,每筆資料也會有限制,預設值是 16MB,其實這個 16MB 的限制已經很寬鬆,一般情況都會夠用,但如果將檔案 (例如圖片) 直接儲存在 MySQL 的話,便有可能出現錯誤,當用 inert 插入 或 update 更新的資料超過限制的話,會出現以下錯誤:

Error 1153 – Got a packet bigger than ‘max_allowed_packet’ bytes

要解決這個問題可以修改 MySQL 的 max_allowed_packet 變數。

在修改前可以先查看目前的 max_allowed_packet 變數的數值,在 CLI 登入 MySQL:

# mysql -u mysql -p

登入 MySQL 後輸入以下指令查看:


上面的數值是 16MB,例如想加大到 32MB, 可以用以下兩種方法設定:

1. 實時改變 max_allowed_packet 變數

這個方法的好處是立即生效,而且不用重新啟動 MySQL,但缺點是下次重新啟動 MySQL 後設定會失效。登入 MySQL 後,輸入以下指令:

2. 修改 my.cnf

修改 my.cnf 可以在重新啟動 MySQL 也保持設定生效,開啟 my.cnf:

# vi /etc/my.cnf

在 [mysqld] 段落加入 max_allowed_packet 的設定,例如:

最後重新啟動 MySQL:

# systemctl restart mysql




Leave a Reply