iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >golang :连接数据库闲置断线的问题
  • 203
分享到

golang :连接数据库闲置断线的问题

2024-04-02 19:04:59 203人浏览 薄情痞子
摘要

golang在进行数据库操作,一般来说我们使用Open函数创建一个数据库(操作)句柄:func Open(driverName, dataSourceName string) (*DB, error) &

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设置一个超时时间,时间小于数据库的超时时间即可。


您可能感兴趣的文档:

--结束END--

本文标题: golang :连接数据库闲置断线的问题

本文链接: https://www.lsjlt.com/news/38429.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • golang :连接数据库闲置断线的问题
    golang在进行数据库操作,一般来说我们使用Open函数创建一个数据库(操作)句柄:func Open(driverName, dataSourceName string) (*DB, error) &...
    99+
    2022-10-18
  • Spring boot 数据库连接断线重连问题
    问题描述我正在做的这个项目,数据库是跨区并且不由自己管理的。防火墙会每隔一段时间就自动断开数据库连接。于是需要对application.properties的datasource进行配置。Ps:我使用是mybatis连接数据库。配置及具体含...
    99+
    2023-05-31
    spring boot数据库 连接
  • laravel数据库连接问题
    1.修改配置文件/.nevDB_HOST=127.0.0.1     //数据库地址 DB_PORT=3306    ...
    99+
    2022-10-18
  • golang数据库连接池设置多少
    golang数据库连接池设置多少取决于数据库类型、数据库配置、服务器性能、并发需求等。详细说明:1、数据库类型,不同的数据库类型可能有不同的并发连接限制,需要根据所使用的数据库类型来确定连接池的大小;2、数据库配置,一些数据库允许通过配置文...
    99+
    2023-12-14
    Golang
  • 关于MybatisPlus配置双数据库驱动连接数据库问题
    最近项目中需要用到2种数据库驱动连接数据库,下面我们基于MybatisPlus实现一下 具体实现 1、在pom.xml中添加如下依赖: <properties> ...
    99+
    2022-11-13
  • golang数据库连接池怎么设置好
    要设置好Go语言的数据库连接池,可以按照以下步骤进行操作: 导入数据库驱动包:首先需要导入适用于Go语言的数据库驱动包,如`da...
    99+
    2023-10-27
    golang 数据库
  • DB2数据库连接失败问题
    DB2的一个用户由于被频繁的错误密码重试造成失败,但是db2diag.log里面并没有显示客户端数据库连接失败的IP地址及其他详细信息,没法定位是来自哪个IP地址的连接尝试造成的。 2020-04-01-...
    99+
    2022-10-18
  • Node.js连接MongoDB数据库产生的问题
    NoSQL的代表MongoDB最近大受欢迎,虽然还有一些功能没有完善,但是并不影响它的大火。 Node.js是使用JavaScript 编写的可以运行在服务端的JS语言。 那么,二者碰撞会产生什么样的火花呢...
    99+
    2022-06-04
    数据库 Node js
  • 关于golang监听rabbitmq消息队列任务断线自动重连接的问题
    golang监听消息队列rabbitmq任务脚本,当rabbimq消息队列断开连接后自动重试,重新唤起协程执行任务 需求背景: goalng常驻内存任务脚本监听rbmq执行任务 任务...
    99+
    2022-11-13
  • linux下python3连接mysql数据库问题
    python语言的3.x完全不向前兼容,导致我们在python2.x中可以正常使用的库,到了python3就用不了了.比如说mysqldb 1.安装pymysql pymysql就是作为python3环境下...
    99+
    2022-06-04
    数据库 linux mysql
  • 使用sqlplus连接Oracle数据库问题
    目录使用sqlplus连接oracle第0步推荐方式其他方式sqlplus连接Oracle的正确语法conn链接数据库语法示例总结使用sqlplus连接Oracle 第0步 以下操作均需要在oracle用户下执行,注意短...
    99+
    2022-12-08
    sqlplus连接Oracle sqlplusOracle数据库 连接Oracle数据库
  • 12C数据库连接ORA-28040的问题分析
    本篇文章给大家分享的是有关12C数据库连接ORA-28040的问题分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 ...
    99+
    2022-10-19
  • IDEA连接数据库,以及报错问题
    IDEA是一款功能强大的开发工具,而IDEA连接数据库是其中的一个附带功能,该功能可以在我们开发大型任务,编写SQL语句时,提供帮助,例如以MySQL为例 解决SQL映射文件的警告提示: 在映射配置文件中存在报红的情况。问题如下: 产生的...
    99+
    2023-09-16
    intellij-idea 数据库 java
  • 关于mysql数据库连接编码问题
    前几天使用springboot做一个数据库查询功能,发现使用中文就无法查到数据,经过测试SQL语句是没有问题的,但是就是查询不到数据,一直显示为null。 后来,我灵机一动尝试了一下查询参数改为英文,显示出查询结果是正常...
    99+
    2023-04-14
    mysql数据库 mysql编码
  • C#中常见的数据库连接和数据读写问题
    C#中常见的数据库连接和数据读写问题,需要具体代码示例在C#开发中,数据库连接和数据读写是经常遇到的问题,正确处理这些问题是保证代码质量和性能的关键。本文将介绍一些常见的数据库连接和数据读写问题,并提供具体的代码示例,帮助读者更好地理解和解...
    99+
    2023-10-22
    C# 数据库连接 数据读写
  • VS2019连接MySQL数据库的常见问题有哪些
    小编给大家分享一下VS2019连接MySQL数据库的常见问题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!下午开始配置各种环境,想着VS2019可以配合My...
    99+
    2023-06-21
  • 安装DiscuzX3.2遇到数据库不能连接的问题
    最近帮朋友安装DiscuzX3.2,遇到了数据库不能连接的问题:Access denied for user 'root'@'localhost' (using password: NO)已经正确填好数据库...
    99+
    2022-10-18
  • 解决Navicat Premium 15连接数据库闪退的问题
    首先排查下网上大神说的有道词典的问题。 我是没有有道词典打开,连接数据库的时候闪退,以此打开,工具—选项—环境 进入OCI环境配置,修改OCIlibrary为为自己对应数据库的oci...
    99+
    2022-11-11
  • SQL数据库连接超时时间已到的问题
    目录SQL数据库连接超时时间已到问题解决方法数据库访问超时时间配置总结1.背景2.配置说明3.方案总结SQL数据库连接超时时间已到 问题 1:System.InvalidOperationException: 超时时间已...
    99+
    2023-04-12
    SQL数据库 SQL连接超时 SQL连接超时时间
  • navicat连接数据库自动断开连接的解决办法
    这篇文章将为大家详细讲解有关navicat连接数据库自动断开连接的解决办法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。navicat 连接数据库自动断开连接解决办法这是...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作