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

WAMP/MAMP/LAMP 環境下 PHPMyAdmin 導入大型 SQL 檔案限制突破完整方案

     編輯:MySQL 資料庫相關知識

突破 PHPMyAdmin 導入大檔案限制:php.ini 三大參數完整調優指南

WAMP/MAMP/LAMP 環境下,PHPMyAdmin 導入資料庫檔案預設限制 2MB。修改 php.ini 三大核心參數即可突破限制,本文提供完整配置、驗證與避坑指南。

核心三參數修改

找到 php.ini (WAMP: C:\wamp\bin\php\php版本\php.ini 或 PHPMyAdmin 介面「設定」頁查看載入路徑)

參數預設值建議值說明
upload_max_filesize2M100M~500M單個上傳檔案最大值
post_max_size8M100M~500MPOST 請求體最大值,**必須 ≥ upload_max_filesize**
memory_limit128M256M~1G腳本最大記憶體,**必須 ≥ post_max_size**

修改範例 (導入 200MB 檔案)

upload_max_filesize = 300M
post_max_size = 300M
memory_limit = 512M

生效步驟

  1. 修改 php.ini 並儲存
  2. 重啟 Web 服務:
    • WAMP: 左鍵圖示 → Restart All Services
    • Apache: httpd -k restart 或 systemctl restart httpd
    • Nginx+PHP-FPM: systemctl restart php-fpm (Nginx 無需重啟)
  3. 驗證:PHPMyAdmin 首頁或 phpinfo() 確認三參數已更新

常見陷阱與解決

陷阱 1:PHPMyAdmin 介面仍顯示「最大限制:2,048 KB」

現象: 修改參數重啟後,PHPMyAdmin 導入頁面提示文字未變。

真相: 該提示為 PHPMyAdmin 靜態文字或舊版本硬編碼,**實際上傳已無限制**。直接拖曳大檔案測試即可。

陷阱 2:Nginx 客戶端請求體限制

若使用 Nginx,還需修改 nginx.conf:

http {
    client_max_body_size 300M;  # 預設 1M
    ...
}

重啟 Nginx:nginx -s reload

陷阱 3:PHP 執行超時

大檔案解析耗時長,需調整:

max_execution_time = 300  # 秒,預設 30 秒
max_input_time = 300      # 解析輸入資料時間
; 0 表示無限制 (生產環境慎用)

陷阱 4:MySQL 封包限制

my.cnf / my.ini:

[mysqld]
max_allowed_packet = 256M  # 預設 4M/16M
; 重啟 MySQL 生效

超大檔案 (>500MB) 替代方案

方案優點缺點適用場景
命令列 mysql無大小限制、效能最快、可斷點續傳需 SSH/終端機存取生產環境、自動化部署
BigDump.php分割長 SQL、瀏覽器執行、進度條需上傳腳本、較慢無 SSH 權限的虛擬主機
分割 SQL 檔案無工具依賴、可平行導入手動分割、外鍵順序問題一次性手動遷移
mysqldump --tab + LOAD DATA極速、平行、斷點續傳需檔案系統存取權TB 級遷移

命令列導入最佳實踐 (推薦生產環境)

# 壓縮傳輸 + 管道導入 (最快)
ssh user@source "mysqldump -u root -p --single-transaction --quick db_name | gzip" | gunzip | mysql -u root -p -h target_host db_name

# 或本地檔案
mysql -u root -p --max_allowed_packet=256M db_name < dump.sql

# 進度監控 (需安裝 pv)
pv dump.sql | mysql -u root -p db_name

參數關係圖解

memory_limit (最大)
    ↑
post_max_size (中間)  ← 含上傳檔案 + 其他 POST 欄位
    ↑
upload_max_filesize (最小)  ← 單檔案上限
    ↑
實際檔案大小

驗證清單

  • [ ] php.ini 三參數已修改且生效 (php -i | grep -E 'upload_max|post_max|memory_limit')
  • [ ] Web 服務已重啟
  • [ ] Nginx client_max_body_size 已調整 (如適用)
  • [ ] MySQL max_allowed_packet 已調整
  • [ ] PHP max_execution_time 足夠大
  • [ ] 實測導入 2x 目標大小檔案成功
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved