phpMyAdmin导入卡住是因PHP、MySQL及phpMyAdmin三重限制未解除:需调高max_execution_time、upload_max_filesize、post_max_size、max_allowed_packet,并设$cfg['ExecTimeLimit']=0,超200MB应改用命令行导入。
phpMyAdmin 导入卡在“正在导入…” 是 PHP 层级超时
不是 phpmyadmin bug,而是 php 的 max_execution_time 在拦着——默认 30 秒,大 sql 解析+执行必然超。哪怕你把 php.ini 改了,若没改对文件或没重启服务,照样失败。
确认你改的是 Web SAPI 对应的 php.ini:访问 phpinfo() 页面,搜 Loaded Configuration File,路径才是生效的那个。
- 必须同步调高:
max_execution_time = 600(10 分钟)、max_input_time = 600、memory_limit = 1024M - PHP-FPM 用户额外检查
www.conf中是否有php_admin_value[max_execution_time]——它会覆盖 php.ini - 改完必须重启 Web 服务(Apache/Nginx/PHP-FPM),否则无效
上传阶段就报错“file exceeds upload_max_filesize”?两个参数都要调
真正起作用的是 upload_max_filesize 和 post_max_size 中更小的那个。只改一个,上传仍被截断。
常见错误现象:点“执行”后页面空白、413 错误、PHP 日志里出现 POST Content-Length of XXX bytes exceeds the limit。
- 设为相同值更稳妥:
upload_max_filesize = 2048M、post_max_size = 2048M -
post_max_size必须 ≥upload_max_filesize,否则 POST 请求体被 Web 服务器提前丢弃 - Nginx 用户还要检查
client_max_body_size(常在 http/server/location 块),设为同样大小
导入中途白屏或卡住?MySQL 拒收大语句,不是 PHP 的锅
WordPress 导出的 SQL 常含百万级 INSERT,单条语句可能超 10MB。max_allowed_packet 默认仅 4MB,超了 MySQL 就静默丢包——页面卡住、变白、不报错。
查当前值:mysql -u root -p -e "SHOW VARIABLES LIKE 'max_allowed_packet';"
- 临时生效(本次会话):
SET GLOBAL max_allowed_packet = 268435456;(256MB) - 永久生效:编辑 MySQL 配置文件(Windows 是
my.ini,Linux/macOS 是my.cnf),在[mysqld]下加:max_allowed_packet = 256M,然后重启 MySQL 服务 - 别漏掉 phpMyAdmin 自身的限制:在
config.inc.php末尾加$cfg['ExecTimeLimit'] = 0;(禁用其内部轮询计时)
导入 >200MB 文件?别硬扛,换命令行直导
phpMyAdmin 把整个 SQL 读进内存再分段执行,遇到巨量 INSERT 容易 OOM 或超时。它本质是管理界面,不是批量导入工具。
最稳路径:mysql -u root -p database_name
- 导入前加
SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0;,导入后再恢复,提速明显 - 大文件建议先压缩:
zcat file.sql.gz | mysql -u root -p database_name - 账号密码别明文写命令里,用
~/.my.cnf存储,权限设为600 - 如果 SQL 含
CREATE DATABASE或权限语句,确保用户有对应权限,否则静默失败
真正容易被忽略的是:三重限制(PHP 上传/执行、phpMyAdmin 内部计时、MySQL 单包上限)必须全部解开,缺一不可;而一旦文件超过几百 MB,命令行就是事实标准,不是“可选方案”。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











