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

MySQL "Server has gone away" 錯誤原因分析與解決方案

     編輯:MySQL 資料庫相關知識

常見原因

  1. SQL 語句過長 / 封包過大:超過 max_allowed_packet 限制
  2. 連線閒置超時:超過 wait_timeout 秒無活動,連線被伺服器斷開

解決方案

1. 應用程式長時間批次處理(採集、資料轉換)

修改 my.cnf:

wait_timeout = 2880000
interactive_timeout = 2880000

或在連線時設定 CLIENT_INTERACTIVE 標誌:

sql = "SET interactive_timeout = 86400";
mysql_real_query(...);

2. SQL 過大或含 BLOB/LONGBLOB 欄位(如圖片資料)

修改 my.cnf:

max_allowed_packet = 10M  -- 視需求調整

max_allowed_packet 控制通訊緩衝區最大長度,預設較小,處理大物件時必須調大。

程式端預防措施

  • 使用連線池並定期 mysql_ping() 保持連線存活
  • 長連線場景設定 wait_timeout 較大值
  • 大資料寫入前檢查 max_allowed_packet 設定
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved