萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

Navicat 導入大 SQL 報 "Lost connection to MySQL server during query" 解決:調大 max_allowed_packet

錯誤現象

[Msg] Decompressing...
[Msg] Table Created: wp_wiki_copy
[Msg] Importing Data...
[Msg] 2013 - Lost connection to MySQL server during query
[Msg] Table Restored: wp_wiki_copy
[Msg] Finished - Stopped before completion

環境:本地 Navicat 導入 240MB (壓縮後) / ~5萬行備份文件,MySQL 服務進程未停止,網絡正常。

根因

單條 INSERT 語句或數據包超過 Server 端 max_allowed_packet 默認 1MB 限制,Server 主動斷開連接。

解決方案

修改 my.ini (Windows) / my.cnf (Linux)

[mysqld]
max_allowed_packet = 500M  # 設大於最大備份文件/單條 SQL 大小
  • Windows:通常在 MySQL 安裝目錄 my.ini。
  • Linux:/etc/my.cnf 或 /etc/mysql/my.cnf。

重啟 MySQL 服務生效

# Windows
net stop mysql && net start mysql
# 或服務管理器重啟

# Linux
systemctl restart mysqld
# 或 service mysqld restart

驗證

mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+-----------+
| Variable_name      | Value     |
+--------------------+-----------+
| max_allowed_packet | 524288000 |  -- 500M
+--------------------+-----------+

再次導入,成功完成。

補充建議

  • 導入超大文件時,建議配合 --max_allowed_packet=500M 客戶端參數(mysqldump/Navicat 導出工具)。
  • 長期運行建議設 64M~256M,避免過大導致內存碎片或 OOM。
  • 若仍報錯,檢查 net_read_timeout/net_write_timeout(默認 60s),大事務導入可適當調大。
copyright © 萬盛學電腦網 all rights reserved