必须同步调高mysql的max_allowed_packet,否则php上传成功后执行sql仍会因单包超限报错“mysql server has gone away”;需在[mysqld]段配置并重启服务,且值不宜超过1g以防oom。
直接改 upload_max_filesize 和 post_max_size 不够,必须同步调高 mysql 的 max_allowed_packet,否则文件传上去了,执行时照样报错“mysql server has gone away”或“packet too large”。
为什么改了 PHP 配置还是导入失败?
phpMyAdmin 导入 SQL 是两阶段过程:先上传(PHP 拦截),再解析执行(MySQL 拦截)。只调大 PHP 侧限制,不代表 MySQL 能接住单条超长 INSERT 或大事务。
-
upload_max_filesize控制文件能否上传成功(比如从 2M 改到 128M) -
post_max_size必须 ≥upload_max_filesize,否则 POST 整体被截断 -
max_allowed_packet控制 MySQL 单次接收最大数据包,默认常为 4M,而一个 wp_posts 表导出的 INSERT 可能单条就破 20M - 查当前值:
mysql -u root -p -e "SHOW VARIABLES LIKE 'max_allowed_packet';"
如何安全调高 MySQL 的 max_allowed_packet?
临时生效(重启后失效)最快验证:
SET GLOBAL max_allowed_packet = 64*1024*1024;
永久生效需改 MySQL 配置文件(如 /etc/mysql/my.cnf),在 [mysqld] 段下加:
max_allowed_packet = 64M
然后重启 MySQL 服务。注意:该值不能设得过大(如 >1G),否则可能引发内存溢出或连接异常。
Word报告自动生成神器。自动生成专业Word文档报告,支持模板填充、目录生成、表格/图表插入、页眉页脚、多级标题、样式主题、批量邮件合并。当用户需要生成Word报告、创建合同文档、批量生成通知/证书、填充Word模板、制作商业计划书时触发。
绕过 phpMyAdmin 上传限制的实操方案
生产环境推荐跳过 Web 界面,用命令行直导,彻底避开 PHP 和 Nginx/Apache 的上传链路:
- 把 SQL 文件上传到服务器任意目录(如
/home/user/backup.sql) - 执行:
mysql -u your_user -p your_database - 若文件已 gzip 压缩:
zcat backup.sql.gz | mysql -u your_user -p your_database - 更稳妥的做法是用
wp db import(需 wp-cli):wp db import backup.sql,它自动处理字符集、分块和重连
别忽略的细节:upload_dir 方式容易漏配
启用 phpMyAdmin 的 $cfg['UploadDir'] 功能看似省事,但有硬性前提:
- 必须在 phpMyAdmin 根目录下建对应文件夹(如
upload),且权限为 web 用户可读(chmod 755 upload) - 该目录路径必须是相对于 phpMyAdmin 安装路径的,不是绝对路径
- Apache/Nginx 必须允许访问该目录,否则下拉菜单里不显示选项
- 上传到
upload目录后,phpMyAdmin 仍会走 PHP 执行流程,所以max_execution_time和memory_limit依然要调高
真正省心的路径,是放弃上传——把文件放服务器上,用命令行或 wp-cli 导入。所有中间环节一并绕过,错误面最小。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










