go-sql-driver: invalid connection

原因1:服务端主动关闭了连接
查看mysql 超时时间

show variables like  '%timeout%';

找到 wait_timeout,单位秒
然后设置空闲连接的最大生存时间小于mysql 的超时时间

db.SetConnMaxLifetime(3600*time.Second)

原因2:并发量大于允许的最大连接数
调大允许打开的最大 连接数和闲置连接,最大闲置连接和 可以打开的最大连接数 最好保持一致

db.SetMaxIdleConns(20)
db.SetMaxOpenConns(20)

解释:go-sql-driver保持了一个连接池,如果发现有连接失效,会主动释放连接,每次会取新的连接

续集: 使用go-sql-driver/mysql包报错 unexpected EOF
报错信息:

[mysql] 2019/06/10 15:12:24 packets.go:36: unexpected EOF

还是SetConnMaxLifetime的问题导致的
谨记,小于wait_timeout。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容