WAMP/MAMP/LAMP 環境下,PHPMyAdmin 導入資料庫檔案預設限制 2MB。修改 php.ini 三大核心參數即可突破限制,本文提供完整配置、驗證與避坑指南。
找到 php.ini (WAMP: C:\wamp\bin\php\php版本\php.ini 或 PHPMyAdmin 介面「設定」頁查看載入路徑)
| 參數 | 預設值 | 建議值 | 說明 |
|---|---|---|---|
upload_max_filesize | 2M | 100M~500M | 單個上傳檔案最大值 |
post_max_size | 8M | 100M~500M | POST 請求體最大值,**必須 ≥ upload_max_filesize** |
memory_limit | 128M | 256M~1G | 腳本最大記憶體,**必須 ≥ post_max_size** |
upload_max_filesize = 300M
post_max_size = 300M
memory_limit = 512M
php.ini 並儲存httpd -k restart 或 systemctl restart httpdsystemctl restart php-fpm (Nginx 無需重啟)phpinfo() 確認三參數已更新現象: 修改參數重啟後,PHPMyAdmin 導入頁面提示文字未變。
真相: 該提示為 PHPMyAdmin 靜態文字或舊版本硬編碼,**實際上傳已無限制**。直接拖曳大檔案測試即可。
若使用 Nginx,還需修改 nginx.conf:
http {
client_max_body_size 300M; # 預設 1M
...
}
重啟 Nginx:nginx -s reload
大檔案解析耗時長,需調整:
max_execution_time = 300 # 秒,預設 30 秒
max_input_time = 300 # 解析輸入資料時間
; 0 表示無限制 (生產環境慎用)
my.cnf / my.ini:
[mysqld]
max_allowed_packet = 256M # 預設 4M/16M
; 重啟 MySQL 生效
| 方案 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| 命令列 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 -i | grep -E 'upload_max|post_max|memory_limit')client_max_body_size 已調整 (如適用)max_allowed_packet 已調整max_execution_time 足夠大