golang :连接数据库闲置断线的问题
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,golang在进行数据库操作,一般来说我们使用Open函数创建一个数据库(操作)句柄:func Open(driverName, dataSourceName string) (*DB, error)
千家信息网最后更新 2025年11月07日golang :连接数据库闲置断线的问题
golang在进行数据库操作,一般来说我们使用Open函数创建一个数据库(操作)句柄:func Open(driverName, dataSourceName string) (*DB, error) 我们知道,返回的*DB是一个具有零到多个底层连接的连接池,可以安全的被多个go程使用,并且会维护自身的闲置连接。所以一般来说open函数我们只调用一次,几乎很少需要关闭DB。 连接池可以使得连接更好的控制,于是简单配置甚至是不做什么配置就可以用了,事实好像也是如此,连上数据库就都ok了。但是!你很可能会遇到下面这样的错误:[mysql] 2017/01/15 12:23:43 packets.go:124: write tcp 127.0.0.1:45697->127.0.0.1:3306:write: broken pipe 其原因很有可能就是你的连接池没有做好相关配置,或者配置了却设置的值不对,那么超时的原因大概有以下几点: 1.最大连接数大于数据库服务器端配置的最大连接数,多余的连接在被使用到的时候出现连接超时 2.网络抖动:每次连接的时候提交或维护大量数据,此时网络不稳定导致连接超时 3.占用的资源未被释放,我们一般只open一次,获取一个*DB,但是在使用stmt,rows或者是tx时候用完没有关闭,耗尽资源也有可能导致连接超时。 对于出现的3中问题,你可以试试下面的解决方案: 1.对于最大连接数的问题,调用函数Db.SetMaxOpenConns()设置值(小于数据库配置的最大连接) 2.对于维护大量数据,可以尝试采用事务操作,若失败,回滚。然后重试。 3.使用defer关键字,在启用操作的时候直接在下一行加上defer *.close()函数return的时候会执行相关的关闭函数。 如果你尝试了以上的解决方案,还是发现偶尔会出现连接超时的错误的话,很可能是因为数据库本身对连接有一个超时时间的设置,如果超时时间到了数据库会单方面断掉连接,此时再用连接池内的连接进行访问就会出错,连接池中的每个连接都维护了一个创建时间,取连接的时候会自动检查的,你可以试试调用db的SetConnMaxLifetime()方法来给db设置一个超时时间,时间小于数据库的超时时间即可。
数据
数据库
时候
时间
配置
函数
最大
问题
一般来说
原因
多个
方案
网络
解决方案
资源
错误
尝试
不对
安全
一行
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
电子科技互联网工程师
嵌入式软件开发目标
黄岩区本地软件开发价格行情
服务器管理计算机名称
硬科技对比互联网
我的世界基岩版服务器管理
重庆綦江水果软件开发
韩国服务器机房
网络安全30号令
做网络安全的人都怎么样
信息网络安全责任书教材
扫码出库软件开发
面试时的自我介绍软件开发
支持多种软件开发的模型是什么
还原对于服务器失败
服务器还原系统网卡驱动
网络安全法宣讲报告会
dell12代服务器
大专计算机网络技术学什么
使用标题词或关键词查询数据库
java二维数据库表结构设计
记录小康工程数据库作用
湖北电子软件开发中心
电脑怎么和服务器同步时间
excell坐简单的数据库
网络安全a类是什么意思
转换器软件开发
linux网络安全招聘
计算机网络技术第二章总结
本地服务器怎么建立