Windows服务器MySQL 5.5远程连续查询二次连接丢失求助
问题详情
- 环境:Windows服务器部署MySQL 5.5,通过命令行远程连接查询数据
- 异常现象:连续执行两次查询时,第二次触发连接丢失错误;等待约1分钟后再次查询可正常返回结果
- 尝试操作:调整MySQL超时参数后,出现「MySQL gone away」错误
- 问题截图:错误现象截图
解决思路
1. 核对MySQL超时相关参数
远程连接被断开大概率是超时参数不匹配或中间网络设备截断会话导致:
- 登录MySQL服务器执行命令,查看当前超时配置:
SHOW VARIABLES LIKE '%timeout%'; - 重点关注
wait_timeout和interactive_timeout:MySQL 5.5默认值为28800秒(8小时),但如果客户端和服务器之间的路由器/防火墙有1分钟左右的TCP会话超时规则,会提前断开空闲连接。 - 修改参数(临时生效):
SET GLOBAL wait_timeout=3600; SET GLOBAL interactive_timeout=3600; - 永久生效需修改Windows下的MySQL配置文件
my.ini,添加或更新:
保存后重启MySQL服务。wait_timeout=3600 interactive_timeout=3600
2. 排查「MySQL gone away」错误
调整超时后出现该错误,优先排查以下点:
- 检查配置文件
my.ini的语法是否正确(比如参数值是否为整数、有无拼写错误),语法错误会导致MySQL重启后参数不生效,引发连接问题。 - 检查
max_allowed_packet参数:如果查询结果集或请求数据包超过该值,会触发该错误。执行命令查看当前值:
调整为合适大小(如16M):SHOW VARIABLES LIKE 'max_allowed_packet';
永久修改同样在SET GLOBAL max_allowed_packet=16777216;my.ini中添加max_allowed_packet=16M。
3. 检查网络与防火墙规则
- 查看Windows服务器防火墙是否对3306端口(MySQL默认端口)设置了空闲连接自动断开的规则,如有则调整或禁用。
- 排查客户端与服务器之间的网络设备(路由器、防火墙),确认是否存在短于MySQL超时时间的TCP会话超时策略,如有则调整设备超时时间,或在服务器端开启TCP保活(Windows系统需通过注册表配置TCP保活参数)。
4. 命令行连接的临时解决方案
如果是手动通过命令行查询,连续操作时可以在第二次查询前重新建立连接:
exit # 退出当前连接 mysql -h 服务器IP -u 用户名 -p # 重新登录
5. 版本补丁与升级
MySQL 5.5存在部分已知的连接相关bug,建议升级到MySQL 5.5的最新补丁版本;若条件允许,可考虑升级至更高稳定版本(如MySQL 5.7),但需提前做好数据备份与兼容性测试。
内容的提问来源于stack exchange,提问作者hamedkh
相关产品推荐
相关产品推荐

