直接执行SELECT @@global.max_allowed_packet, @@session.max_allowed_packet;可同时查看全局与会话级值,避免仅用SHOW VARIABLES LIKE '%max_allowed_packet%'导致误判;XAMPP需在C:\xampp\mysql\bin\my.ini的[mysqld]、[client]、[mysqldump]三处均设置max_allowed_packet = 64M并彻底重启MySQL服务。
怎么查当前
值
直接连进 MySQL 命令行,执行:
别只看
——它只显示会话级值,容易误判。两个值都要对得上:如果
是 4194304(4MB),但
是 1048576(1MB),说明客户端启动时被压低了,光改服务端没用。
Windows 下 XAMPP 的
改哪几处
XAMPP 的 MySQL 配置文件是
(不是
目录下的)。必须同时改两段:
段加:
(这是服务端硬上限)
段加:
(否则
命令行、Navicat、SQLyog 等工具仍按默认 16MB 走)
别漏掉
段(如果要用
导出大库):
改完保存,**必须重启 XAMPP 控制面板里的 MySQL 服务**,仅“停止再启动”不够,要确保进程完全退出再拉起。
用
命令行导入大 SQL 文件还报错?
即使
改对了、服务也重启了,
段(尤其新版 XAMPP 自带的 MySQL 客户端)。解决方法只有两个:
MySQL(Linux)
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
下载
显式传参:
或改用交互式导入:先
进去,再执行
,然后
注意:
对已建立连接无效,且 XAMPP 默认权限下普通用户执行会报
。
设成多大才不翻车
别一上来就写
。XAMPP 通常跑在开发机上,内存有限,设太大容易触发 OOM 杀进程。实际建议:
纯文本 SQL 导入(如 Confluence dump):32M~64M 足够
含 Base64 图片字段的 INSERT:按最长单条记录预估 + 20%,比如最长一条 12MB,设 16M 即可
值必须是 1024 的整数倍,单位后缀(
/
)要大写,
会被忽略
改完立刻验证:
看是否真加载成功,别信配置文件写了就生效
最常被忽略的一点:某些 PHP 应用(比如旧版 WordPress 插件或自定义脚本)会在 PDO 连接串里硬编码
,这时服务端调再大也没用——得去代码里搜
或
。
max_allowed_packetSELECT @@global.max_allowed_packet, @@session.max_allowed_packet;SHOW VARIABLES LIKE '%max_allowed_packet%'@@global@@sessionmy.iniC:\xampp\mysql\bin\my.inietc[mysqld]max_allowed_packet = 64M[client]max_allowed_packet = 64Mmysql[mysqldump]mysqldumpmax_allowed_packet = 64Mmysqlmy.inimysql -u root -p db_name 仍可能失败。因为命令行客户端有自己的缓冲区,默认不读 [client]mysql --max-allowed-packet=64M -u root -p db_name mysql -u root -pSET SESSION max_allowed_packet = 67108864;source dump.sqlSET GLOBALAccess denied1GMG64mSELECT @@global.max_allowed_packet;maxAllowedPacketmaxAllowedPacketmysqli_options