执行OPTIMIZE TABLE时出现#2006错误:MySQL server has gone away(phpMyAdmin)
解决phpMyAdmin执行OPTIMIZE TABLE时出现#2006 "MySQL server has gone away"错误
这个错误大多是因为OPTIMIZE TABLE操作耗时过长,或是MySQL、phpMyAdmin的超时/数据包限制设置不够导致的,以下是具体解决办法:
调整MySQL核心配置
找到MySQL的配置文件(Linux系统是my.cnf,Windows系统是my.ini),添加或修改这些参数:wait_timeout = 3600 interactive_timeout = 3600 max_allowed_packet = 256M保存后重启MySQL服务。
wait_timeout和interactive_timeout延长了连接超时时间,max_allowed_packet提升了允许传输的数据包大小,避免大表操作时连接被强制断开。修改phpMyAdmin的超时设置
打开phpMyAdmin的config.inc.php文件,添加或更新以下配置:$cfg['ExecTimeLimit'] = 0; // 0代表取消执行时间限制 $cfg['MaxAllowedPacket'] = 268435456; // 和MySQL的max_allowed_packet对应,单位为字节让phpMyAdmin有足够时间完成大表的优化操作。
换用ALTER TABLE替代OPTIMIZE TABLE(针对超大表)
如果处理的表体积特别大,直接执行OPTIMIZE容易超时,用ALTER TABLE重建表的效果和OPTIMIZE一致,稳定性更强:ALTER TABLE `你的表名` ENGINE=InnoDB;(如果是MyISAM引擎,把InnoDB换成MyISAM即可)
排查MySQL服务稳定性
查看MySQL的错误日志(一般在数据目录下的hostname.err文件),确认是否存在内存不足、磁盘IO过高导致服务意外终止的情况,必要时升级服务器配置或清理磁盘空间。
内容的提问来源于stack exchange,提问作者Muhammad Bilal
相关产品推荐
相关产品推荐

