golang查询数据报错:closing bad idle connection: unexpected read from socket
  jE8iBWyhLcsg 2023年11月02日 57 0

原因

应用程序在使用驱动的有效空闲连接时候,发现数据库的连接已经失效(因为连接超过wait_timeout时间),用一个失效的连接查数据,所以报错。

解决办法

  1. 将sql驱动SetConnMaxLifetime和SetConnMaxIdleTime设置时间,并且小于数据库的wait_timeout时间(单位秒)。
  2. 调小wait_timeout。

分析

应用程序配置 数据库配置 分析
SetConnMaxLifetime,SetConnMaxIdleTime wait_timeout maxLifeTime=30s,wait_timeout=20s,如果在25s时候查询,由于空闲连接没被释放,那么报错,如果在35s时候查询,会用新的连接,不会报错

查询和设置wait_timeout

show global variables like 'wait_timeout'; set global wait_timeout=20000;

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  LxKByvFwtHdi   2023年11月02日   46   0   0 xmlTomcat数据库
jE8iBWyhLcsg