phpmyadmin上传大文件失败的根本原因是php的upload_max_filesize和post_max_size限制,二者必须同时调大且post_max_size≥upload_max_filesize,否则请求在php接收阶段即被截断;超大sql文件推荐使用mysql命令行导入。
phpmyadmin 本身不控制 post 大小限制,真正起作用的是 php 的 upload_max_filesize 和 post_max_size —— 二者必须同时调大,且 post_max_size ≥ upload_max_filesize,否则上传仍会失败。
为什么改了 upload_max_filesize 还报错?
常见错误现象是:页面提示 “文件超出最大允许大小”、“You probably tried to upload too large file”,或直接空白、无响应。这不是 phpMyAdmin 界面显示的 “22,528 KB” 那个数字在拦你,而是 PHP 在接收 HTTP 请求体时就被截断了。
根本原因在于:post_max_size 控制整个 POST 请求体(含文件 + 表单字段)的上限;upload_max_filesize 只管其中文件部分。如果前者更小,哪怕文件没超,整个请求也会被 PHP 拒绝。
-
post_max_size必须 ≥upload_max_filesize,建议设为相同值(如都设为256M) - 若使用宝塔面板:进「网站 → PHP 设置 → 配置修改」,直接编辑这两项,保存后务必「重启 PHP 服务」(不是重载)
- 若手动改
php.ini:确认你改的是当前 PHP 版本实际加载的配置文件(可用php --ini或phpinfo()验证)
memory_limit 和执行超时也得同步调整
即使上传成功,大 SQL 文件在 phpMyAdmin 内解析、分块、执行时仍可能因内存或时间不足中断。典型表现是导入中途卡住、报 500 错误,或日志里出现 Allowed memory size exhausted、Maximum execution time exceeded。
-
memory_limit建议设为512M或更高(尤其当 SQL 含大量 INSERT 或注释时) -
max_execution_time = 600(10 分钟),避免脚本被强制终止 -
max_input_time = 300(5 分钟),覆盖从接收数据到开始处理的时间窗口 - 注意:
memory_limit应 >post_max_size,否则 PHP 解析 POST 数据时就可能爆内存
导入超 50MB SQL 文件的更可靠方式
phpMyAdmin 是 Web 界面工具,本质受限于 HTTP 生命周期和浏览器稳定性。哪怕所有 PHP 参数都调高,遇到 200MB+ 的 SQL 文件,仍大概率失败或极慢。
- 优先用命令行:
mysql -u root -p database_name - 导入前可临时关外键检查提速:
SET FOREIGN_KEY_CHECKS = 0;,导入后再开 - 确保字符集一致,避免乱码:加
--default-character-set=utf8mb4参数 - 如果 SQL 文件本身含
CREATE DATABASE,先手动建库再导入;含USE db_name则需确认目标库已存在
最常被忽略的一点:改完配置后没确认 PHP 是否真的加载了新值。别只信 phpMyAdmin 页面右下角显示的“22,528 KB”,它只是前端估算,不是真实生效值。用 phpinfo() 页面查 upload_max_filesize、post_max_size 等字段的实际输出,才是唯一可信依据。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











