首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 導入大 SQL 文件報錯 2006 (MySQL server has gone away) 根因與修復

     編輯:MySQL 綜合教學

MySQL 導入大 SQL 文件報錯 2006 (MySQL server has gone away) 根因與修復

現象:導入 10MB+ SQL 腳本時,報錯 Error 2006 - MySQL server has gone away。小文件正常。根因:**單條 SQL/數據包超過 max_allowed_packet 默認限制(4MB/16MB),導致連接被服務端斷開**。

錯誤堆疊示例

# 編輯 my.cnf [mysqld] 區
[mysqld]
max_allowed_packet = 300M      # 最大允許封包(建議 100M-1G,視最大 SQL 大小)
wait_timeout = 200000          # 非交互超時秒數(防長事務斷開)
interactive_timeout = 200000   # 交互超時秒數

# 重啟生效
service mysql restart
# 或動態生效(僅當前連接,重啟失效)
SET GLOBAL max_allowed_packet = 300*1024*1024;
SET GLOBAL wait_timeout = 200000;

參數詳解

參數默認值建議值作用
max_allowed_packet4MB (≤5.6) / 16MB (5.7+)100M-1G單次通信最大封包,影響 INSERT 批次、LOAD DATA、Binlog 事件
wait_timeout28800 (8h)86400+ (1天+)非交互連接空閒斷開時間,長導入需調大
interactive_timeout28800同 wait_timeout交互式客戶端空閒斷開
net_read_timeout30600+讀取封包超時,大包傳輸慢需調大
net_write_timeout60600+寫入封包超時

客戶端同步調大(必須雙端生效)

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