根本原因是upload_max_filesize、post_max_size或client_max_body_size三者中至少一个低于SQL文件体积,需同步调大并重启服务;推荐用mysql命令行直导彻底绕过限制。
这不是sql文件本身有问题,而是上传过程在某一层被截断或拒绝了——90%的情况是 upload_max_filesize、post_max_size 或 client_max_body_size 三者中至少一个低于你的sql文件体积。
因为 PHP 的上传限制由两个参数共同控制:upload_max_filesize 管单个文件大小,post_max_size 管整个 POST 请求体(含文件+表单字段)。如果后者更小,文件照样传不过去。
post_max_size 必须 ≥ upload_max_filesize,否则即使文件没超限,也会被 PHP 直接丢弃upload_max_filesize = 256M,但 post_max_size = 8M(默认值)phpinfo() 页面确认实际生效值,别只看配置文件Web 服务器在 PHP 之前就可能把请求拦下。phpMyAdmin 的上传请求走的是 HTTP POST,而 nginx 默认 client_max_body_size 是 1M,Apache 的 LimitRequestBody 默认不限制但可能被模块拦截。
client_max_body_size 256M;,然后 nginx -t && systemctl reload nginx
LimitRequestBody 268435456(单位字节,256MB)client_max_body_size 即可keepalive_timeout 也得调大(比如 300),否则大文件上传中途会断连这通常是 max_execution_time 或 memory_limit 不足导致脚本被强制终止,phpMyAdmin 捕获不到具体错误,只显示笼统的 “Incorrect format parameter”。
max_execution_time 建议设为 300–600(秒),避免解析大文件时超时memory_limit 至少 256M,512M 更稳妥;phpMyAdmin 会把整个 SQL 文件读进内存再分段执行max_allowed_packet(建议 256M),否则 INSERT 大字段时会截断真正麻烦的不是调参数,而是调完之后没验证生效、或者只调了一半(比如改了 PHP 却忘了 nginx)。只要三个环节——PHP、Web 服务器、MySQL——的限制都明确大于你的文件体积,并且重启到位,这个错误基本就消失了。
立即学习“PHP免费学习笔记(深入)”;