MySQL Error Code:2013查询连接丢失问题求助(5.6.43-log版本)
解决MySQL Error 2013: Lost Connection During Query(大结果集场景)
核心问题分析
Error 2013是查询执行过程中客户端与服务器连接中断,但服务器端进程仍在运行,说明不是服务器主动终止连接,大概率是网络层面中断、客户端/中间件超时,或是服务器端隐性参数配置不到位导致。
排查与修复步骤
1. 修正参数拼写错误
你提到的net_ite_timeout是拼写错误,正确参数为net_write_timeout——这个参数控制服务器向客户端写数据的超时时间,大结果集传输时极易触发,建议设置:
net_write_timeout = 3600
2. 调大max_allowed_packet参数
当前设置的6710886(约6.4M)过小,大结果集传输时会因数据包超出限制导致连接中断,建议至少调至64M:
max_allowed_packet = 67108864
修改后需重启MySQL服务生效。
3. 排查网络层面问题
- 确认客户端与服务器间网络稳定性,检查防火墙/路由器是否存在超时机制(部分设备默认TCP连接超时为300秒,会主动断开长时间无响应的连接)。
- 在服务器本地执行相同查询,若本地执行正常,可确定问题出在网络或客户端侧。
4. 调整客户端侧超时设置
- Workbench:除
DBMS connections timeout interval外,需检查Edit > Preferences > SQL Editor中的Query Timeout,设置为0(禁用超时)或更大数值。 - Java应用:调整JDBC连接参数,添加或修改
connectTimeout与socketTimeout,示例:
jdbc:mysql://host:port/db?connectTimeout=3600000&socketTimeout=3600000
注意socketTimeout需设置足够大,避免客户端主动断开连接。
5. 检查服务器端额外参数
- 确认
interactive_timeout参数,该参数针对交互式连接(如Workbench),建议与wait_timeout保持一致:
interactive_timeout = 28800
- 查看MySQL错误日志(
error.log),排查是否存在OOM、磁盘IO过高等导致服务卡顿的情况。
6. 从根源优化查询
大结果集查询本身易引发超时问题,建议优化查询逻辑:
- 避免
SELECT *,仅查询所需字段。 - 添加合适索引,减少查询扫描的数据量。
- 分批次获取结果(如Java使用
setFetchSize,Workbench用LIMIT分页查询)。
验证方法
修改参数后,先在服务器本地执行查询确认正常返回结果;再通过Workbench和Java应用分别测试,观察是否仍出现2013错误。
内容的提问来源于stack exchange,提问作者Anil
相关产品推荐
相关产品推荐

