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

phpMyAdmin 無法導入大 SQL 文件?命令行 source 命令一招破解

     編輯:PHP 綜合知識

phpMyAdmin 受限於 PHP upload_max_filesize、post_max_size、memory_limit、max_execution_time 等配置,導入超大 SQL 文件(>50MB)極易失敗。最直接、最高效的解法是繞過 Web 層,直接在 MySQL 客戶端使用 source 命令。

操作步驟

  1. 打開終端(Linux/macOS)或命令提示符/PowerShell(Windows)。
  2. 登錄 MySQL:
    mysql -u root -p
    輸入密碼進入 mysql> 提示符。
  3. 選擇目標數據庫:
    USE your_database_name;
  4. 執行導入:
    source /path/to/your/backup.sql;
    路徑規範:
    • Linux/macOS:/home/user/backup.sql
    • Windows:D:/backup.sql 或 D:\\backup.sql(正反斜槓均可)
  5. 等待執行完成,顯示 Query OK, ... rows affected 即成功。

為什麼 source 比 phpMyAdmin 強?

維度phpMyAdminmysql source
文件大小限制受 PHP/WebServer 配置限制(通常 < 128MB)無實際限制(TB 級測試通過)
內存佔用PHP 進程需載入整文件解析,峰值內存大流式讀取執行,恆定低內存
執行超時受 max_execution_time 限制(默認 30s)無超時限制,直到完成
錯誤定位錯誤信息常被 HTML 包裹,難以定位行號直接顯示行號、錯誤代碼、SQLSTATE
編碼處理易發生 UTF-8/GBK 混淆可顯式指定 SET NAMES utf8mb4; 後再 source

進階技巧

1. 指定字符集導入(防亂碼)

mysql -u root -p --default-character-set=utf8mb4
mysql> USE your_db;
mysql> SET NAMES utf8mb4;
mysql> source /path/to/backup.sql;

2. 導出時同步優化(配合導入使用)

mysqldump -u root -p --single-transaction --quick --routines --triggers --events \
  --default-character-set=utf8mb4 --hex-blob your_db > backup.sql
  • --single-transaction:InnoDB 熱備份不鎖表
  • --quick:流式導出,不緩存全表
  • --hex-blob:二進制字段十六進制導出,防編碼損壞

3. 進度監控(大文件導入時)

# 安裝 pv (Pipe Viewer)
apt-get install pv  # 或 yum/brew

# 導入並顯示進度條
pv /path/to/backup.sql | mysql -u root -p your_db

常見報錯對策

  • ERROR 2006 (HY000): MySQL server has gone away → 增加 max_allowed_packet(如 1G):SET GLOBAL max_allowed_packet=1073741824;
  • ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes → 同樣調大該參數。
  • ERROR 1062 (23000): Duplicate entry → 導入前 DROP DATABASE 或使用 --ignore-table 跳過衝突表。
  • Access denied → 確認用戶有目標庫 CREATE, INSERT, LOCK TABLES 權限。

結語

「大數據導入,命令行首選」是資料庫運維鐵律。掌握 source、mysqldump、pv 組合拳,讓 TB 級遷移也能從容應對。

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