golang :连接数据库闲置断线的问题
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,golang在进行数据库操作,一般来说我们使用Open函数创建一个数据库(操作)句柄:func Open(driverName, dataSourceName string) (*DB, error)
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
软件开发师前景如何
2017网络安全培训
温州计算机网络技术常见问题
公司网络安全讲座听后感
数据库的构成
文字软件开发教程
从事软件开发考什么证号
软件开发的成本如何预测
河南行者网络技术有限公司
武汉掌易乐游网络技术
河南java软件开发学校
芝罘区游戏软件开发哪家好
杭州管理软件开发商
网络安全局 美国
c 数据库写入txt
附近的人网络安全教育微电影
网络安全了解简述
董浩 网络安全
安庆安卓软件开发费用
慕课数据库答案免费查询
元旦网络安全温馨提示
esg数据库
域成员通过哪个端口注册域服务器
甘肃互联时代网络技术
软件开发合同 承诺书
服务器中加入线程
广东dns服务器设置云主机
ibm 服务器 官网
数据库原理及应用pdf
魔兽世界更改默认服务器