宝塔面板phpMyAdmin导入SQL失败,90%因PHP配置未改对位置:须修改宝塔中PHP-FPM对应的php.ini(非CLI版),同步调大upload_max_filesize、post_max_size(≥前者)、max_execution_time和memory_limit,并重启PHP;同时需在Nginx站点配置中添加client_max_body_size 512M并重载,否则请求在PHP前即被拦截。
宝塔面板里 phpmyadmin 导入 sql 失败,90% 是 php 配置没改对位置,不是 phpmyadmin 本身的问题——改错配置文件、漏重启服务、或只调了 upload_max_filesize 却没同步调 post_max_size,都会白忙活。
确认你改的是 PHP-FPM 对应的 php.ini(不是 CLI 版)
宝塔默认用 PHP-FPM 管理 PHP,phpMyAdmin 走的是 FPM SAPI,所以必须改它用的配置,而不是系统默认的 CLI 版本。
- 在宝塔面板左侧点「软件商店」→ 找到你正在用的 PHP 版本 → 点「设置」→「配置修改」,这里打开的就是当前生效的
php.ini - 别去改
/etc/php/*/cli/php.ini或/www/server/php/*/etc/php.ini(后者是旧版路径,新版宝塔已不用) - 改完后点右上角「保存」,宝塔会自动提示是否重启 PHP 服务——必须点「重启」,否则不生效
- 验证方式:在 phpMyAdmin 根目录建个
info.php,内容为<?php phpinfo(); ?>,访问它,搜索Loaded Configuration File,确认路径和你刚改的完全一致
三个关键参数必须同步调,且有大小关系
只调 upload_max_filesize 是最常见错误。PHP 上传流程实际受两个硬限制共同约束,缺一不可。
-
upload_max_filesize = 256M:单文件上限,按你的 SQL 文件大小设(比如 300MB 就设 300M) -
post_max_size = 384M:必须 ≥upload_max_filesize,建议留 1.5 倍余量,否则 POST 数据整体被截断,页面可能直接空白或报 400 -
max_execution_time = 600:大 SQL 解析+执行耗时长,30 秒默认值根本不够;设为 0 表示不限制(不推荐),600 是较稳妥值 - 顺手调高
memory_limit = 512M:phpMyAdmin 把整个 SQL 文件读进内存再分段执行,内存不足会 OOM 中断
宝塔特有坑:Nginx 的 client_max_body_size 也得同步放开
宝塔默认 Nginx 配置里 client_max_body_size 是 100M,它在 PHP 之前就拦住了大请求体——即使 PHP 配置全调高,也会卡在这一步,报错现象常是 413 Request Entity Too Large 或 “Incorrect format parameter”。
- 在宝塔面板左侧点「网站」→ 找到你的 phpMyAdmin 站点(通常是子目录或二级域名)→「设置」→「配置文件」
- 在
server块内,找到location ~ \.php$ {区域,在它上面加一行:client_max_body_size 512M; - 保存后点「重载配置」,不要只点「保存」——重载才会让 Nginx 重新加载新配置
- 如果 phpMyAdmin 是通过主站子目录访问(如
/phpmyadmin),需确保该client_max_body_size写在对应站点的 server 块里,不是全局 http 块
真要导几百 MB 以上的 SQL?别硬扛,直接用命令行
phpMyAdmin 的设计目标不是处理超大导入,它把 SQL 全读进 PHP 内存、再模拟客户端执行,本质有瓶颈。哪怕所有配置拉满,遇到含百万级 INSERT 的单文件,仍可能因解析慢、超时、内存抖动失败。
立即学习“PHP免费学习笔记(深入)”;
- 登录服务器终端,执行:
mysql -u root -p database_name < /path/to/your/file.sql - 密码不暴露在命令行:先在
/root/.my.cnf写好账号信息(注意权限chmod 600 /root/.my.cnf),再运行无密码版:mysql database_name < file.sql - 如果 SQL 文件是 gzip 压缩的(
.sql.gz),直接用:zcat file.sql.gz | mysql -u root -p database_name - 导入中途断了?用
mysqlimport或拆成多个小文件 +source分批执行更可控
最易被忽略的是 Nginx 层的 client_max_body_size —— 宝塔用户常以为改完 PHP 就万事大吉,结果卡在网关层,日志里连 PHP 错误都看不到。



















