透過 phpMyAdmin 或 PHP 腳本匯入 .sql 檔時,超過預設 2MB 限制失敗,錯誤訊息通常為 File size exceeds upload_max_filesize 或腳本逾時。
| 參數 | 預設值 | 影響範圍 | 建議調大值 |
|---|---|---|---|
upload_max_filesize | 2M | 單檔上傳上限 | 200M (視需求) |
post_max_size | 8M | POST 總資料上限(含表單欄位) | 200M (需 ≥ upload_max_filesize) |
memory_limit | 128M | 腳本記憶體上限(解析大 SQL 需較多記憶體) | 256M~512M |
; 找到並修改
upload_max_filesize = 200M
post_max_size = 200M
memory_limit = 256M
; 重啟生效
service httpd restart
# 或
systemctl restart php-fpm
mysql/bin 加入 PATH。mysql -u root -p -e "CREATE DATABASE mydb2;"mysql -u root -p mydb2 < e:\mysql\mydb2.sql命令列匯入不受 PHP 上傳/記憶體限制,僅受限於max_allowed_packet(預設 4MB/64MB,可在my.cnf調大至 1G)與伺服器記憶體。
| 操作 | 指令範例 |
|---|---|
| 匯出整庫(結構+資料) | mysqldump -h localhost -u root -p mydb > e:\mysql\mydb.sql |
| 匯出單表 | mysqldump -h localhost -u root -p mydb mytable > e:\mysql\mytable.sql |
| 匯出僅結構 | mysqldump -h localhost -u root -p --add-drop-table mydb > e:\mysql\mydb_stru.sql |
| 匯出僅資料 | mysqldump -h localhost -u root -p -t mydb > e:\mysql\mydb_data.sql |
| 壓縮匯出 | mysqldump -u root -p mydb | gzip > mydb_$(date +%F).sql.gz |
| 命令列匯入 | mysql -u root -p target_db < backup.sql |
| MySQL 客戶端內部匯入 | USE target_db; SOURCE /path/backup.sql; |
若單檔過大(>1GB),建議用 split 分割或 sed/awk 按表分割,再依序匯入,避免單一交易過大導致回滾段暴漲。
原文標題:MySQL導入導出.sql文件
連結:https://www.cnblogs.com/cnkenny/archive/2009/04/22/1441297.html