phpmyadmin 4.9 导入大 sql 失败主因是 php 的 upload_max_filesize 和 post_max_size 限制,须同步调大二者(post_max_size ≥ upload_max_filesize)、memory_limit 和 max_execution_time,并重启对应 php 服务;若仍失败,应启用 uploaddir 本地导入或直接使用 mysql 命令行导入。
phpmyadmin 4.9 导入大 sql 文件失败,不是它本身卡着你,而是 php 的 upload_max_filesize 和 post_max_size 在拦路——改对这两个值,重启对应服务,才能真正生效。
为什么改了 php.ini 还没用?找错配置文件是常见原因
phpMyAdmin 4.9 运行在 Web SAPI(通常是 PHP-FPM 或 Apache mod_php)下,它不读 CLI 版的 php.ini。很多人改了 /etc/php/8.1/cli/php.ini,结果毫无反应。
- 打开 phpMyAdmin 页面 → 右上角「其他」→「PHP 信息」,搜索
Loaded Configuration File,看到的路径才是真正在用的php.ini - 若用 Nginx + PHP-FPM,优先改
/etc/php/{version}/fpm/php.ini;Apache 用户则看apache2/conf.d/php.conf或模块加载路径 - 改完后必须重启服务:
sudo systemctl restart php8.1-fpm(FPM)或sudo systemctl restart apache2(Apache) - 刷新 PHP 信息页,确认
upload_max_filesize、post_max_size、memory_limit已更新
必须同步调大的三个 PHP 配置项
只改 upload_max_filesize 不够,post_max_size 必须 ≥ 它,否则 POST 数据被截断,上传直接失败;memory_limit 要足够解析和执行大 SQL。
-
upload_max_filesize = 128M(控制单个上传文件上限) -
post_max_size = 128M(必须 ≥ upload_max_filesize,否则无效) -
memory_limit = 512M(避免 SQL 解析时 OOM;设为-1表示不限制,生产环境慎用) - 顺手加一句:
max_execution_time = 600,防止导入中途超时中断
phpMyAdmin 4.9 自身配置能绕过上传界面
即使 PHP 配置调大了,浏览器上传仍可能卡死或超时。phpMyAdmin 4.9 支持从服务器本地目录导入,完全跳过 HTTP 上传流程。
- 在 phpMyAdmin 根目录下新建文件夹,比如
import - 编辑
config.inc.php,找到并修改:$cfg['UploadDir'] = 'import'; - 用 FTP 或 SSH 把 SQL 文件传进
import/目录 - 进入 phpMyAdmin →「导入」页面 → 下拉选择「网站服务器上载目录」→ 选中你的文件 → 执行
- 注意:
$cfg['UploadDir']路径是相对于 phpMyAdmin 安装根目录的,不是绝对路径
超过 100MB 就别硬扛了,命令行才是稳解
phpMyAdmin 4.9 对超大 SQL(尤其含百万级 INSERT)有天然瓶颈:它把整个文件读进内存再分段执行,容易假死、超时或崩溃。这时任何配置调整都只是拖延问题。
- 用
mysql -u root -p database_name 直接导入,不走 PHP 层 - 如果怕密码暴露,提前配好
~/.my.cnf,设置[client]段的user和password - 导入前先
SET FOREIGN_KEY_CHECKS = 0;和SET UNIQUE_CHECKS = 0;,能显著提速 - 导入完成后记得恢复:
SET FOREIGN_KEY_CHECKS = 1;、SET UNIQUE_CHECKS = 1;
真正容易被忽略的是:上传限制只是第一道关,后面还有执行超时、内存溢出、MySQL 自身的 max_allowed_packet 限制——它默认才 4MB,导入大 SQL 前也得同步调高。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











