首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

解決 MySQL「封包過大」錯誤:max_allowed_packet 完整設定指南

     編輯:MySQL 資料庫相關知識

當 MySQL 用戶端或伺服器接收到超過 max_allowed_packet 設定大小的封包時,會拋出「Packet too large」錯誤並關閉連線。部分用戶端可能改報「Lost connection to MySQL server during query」。本文說明如何正確調整此參數。

封包大小限制說明

  • MySQL 5.1 理論最大支援 1GB 封包
  • 用戶端與伺服器各自擁有獨立的 max_allowed_packet 變數,兩端都需調整

用戶端設定(mysql 指令列工具)

預設值:16MB

mysql --max_allowed_packet=32M

或在選項檔 [client] 區段設定:

[client]
max_allowed_packet=32M

伺服器設定

預設值:1MB

啟動參數:

mysqld --max_allowed_packet=16M

選項檔 [mysqld] 區段(建議):

[mysqld]
max_allowed_packet=16M

調整原則與注意事項

  • 安全性:僅在需要時才分配額外記憶體,增加數值相對安全
  • 預設值較小的原因:攔截錯誤封包、防止記憶體溢位
  • BLOB/TEXT 大欄位:處理大型二進位資料時必須調大
  • 記憶體不足時:嘗試在 mysqld_safe 腳本中加入 ulimit -d 256000 後重啟

常見應用場景

  • 匯入大型 SQL 檔案
  • 儲存高解析度圖片、文件等 BLOB 資料
  • 批次插入大量長文字內容

正確設定 max_allowed_packet 能有效避免資料傳輸中斷,確保大型資料操作順利完成。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved