最稳最快方式是用mysql命令行导入,绕过phpMyAdmin的upload_max_filesize、max_execution_time和$cfg['ExecTimeLimit']三层限制,同时需确保max_allowed_packet足够大并正确设置字符集与路径格式。
直接用 mysql 命令行导入,绕过 phpmyadmin 所有 web 层限制——这是最稳、最快、最不容易出错的方式。
为什么 phpMyAdmin 执行大 SQL 会中断
不是 SQL 本身慢,而是三层限制在同时起作用:upload_max_filesize 卡住上传、max_execution_time 中断 PHP 脚本、$cfg['ExecTimeLimit'](默认 300 秒)在 phpMyAdmin 内部主动终止。哪怕你调高了 PHP 的超时,$cfg['ExecTimeLimit'] 仍会掐断执行;哪怕文件传上去了,max_allowed_packet 不够也会导致“假性卡死”——页面空白、无报错、连接静默断开。
-
upload_max_filesize和post_max_size必须 ≥ SQL 文件大小(例如设为128M) -
$cfg['ExecTimeLimit'] = 0要写进XAMPPphpMyAdminconfig.inc.php,改完清浏览器缓存才生效 -
max_allowed_packet必须 ≥ 单条最长语句(如含大INSERT ... VALUES (...)),建议设为256M并重启 MySQL
如何安全拆分 SQL 文件手动续导
当必须用 phpMyAdmin、又没权限改配置时,拆分是唯一可控路径。关键不是“按大小切”,而是“按完整语句切”,否则会在 INSERT 中间断开,导致语法错误。
- 用
split -l 2000 -d large.sql chunk_切块(2000 行较安全,避免切在长 VALUES 里) - 每个 chunk 开头加
SET autocommit=0;,结尾加COMMIT;,防止中途失败留脏数据 - 导入前检查 chunk_00 是否含
CREATE DATABASE或USE——这些只应在第一个文件里执行,后续 chunk 要删掉 - 失败时看终端最后一行成功导入的表名或行数,用
sed -n 'N,$p' large.sql > resumed.sql截取剩余部分(N 是下一条未执行语句的行号)
命令行导入时如何避免常见坑
用 mysql -u root -p wordpress_db 进入客户端后,source 命令看似简单,但极易因路径、编码、语句格式失败。
- Windows 下路径用正斜杠或双反斜杠:
source C:/path/to/file.sql或source C:\path\to\file.sql - 确保 SQL 文件以
UTF8MB4编码保存,导入时加参数:mysql -u root -p --default-character-set=utf8mb4 wordpress_db - 如果 SQL 含
DELIMITER $$或存储过程,source可能解析失败;此时改用重定向:mysql -u root -p wordpress_db - 别用
--force掩盖主键冲突或重复建表错误——它会跳过错误继续,但数据状态不可控
真正容易被忽略的是:WordPress 演示数据或升级包里的 SQL 往往硬编码了原站域名,导入后网站打不开不是导入失败,而是 wp_options 里 siteurl 和 home 还指向 https://demo.example.com。导入完成后第一件事,是立刻执行这两条更新:
立即学习“PHP免费学习笔记(深入)”;
UPDATE wp_options SET option_value = 'http://localhost/wordpress' WHERE option_name = 'siteurl'; UPDATE wp_options SET option_value = 'http://localhost/wordpress' WHERE option_name = 'home';



















