前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >golang go-sql-driver gorm 数据库报错 bad connection

golang go-sql-driver gorm 数据库报错 bad connection

作者头像
一个会写诗的程序员
发布于 2022-12-21 06:50:33
发布于 2022-12-21 06:50:33
2.5K00
代码可运行
举报
运行总次数:0
代码可运行

开发Go项目中,有时候在有大量操作Mysql时,有时候会发生如下错误。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"driver: bad connection"

原因

这是因为Mysql服务器主动关闭了Mysql链接。 在项目中使用了一个mysql链接,同时使用了事务,处理多个表操作。处理时间长。 导致空闲链接超时,Mysql关闭了链接。而客户端保持了已经关闭的链接。

具体原因是

没有设置 db.SetConnMaxLifetime ,导致客户端保持了已经关闭的链接。

解决

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    // 设置数据库闲链接超时时间
    write.SetConnMaxLifetime(time.Second * 300)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
mysql invalid conn排查
服务使用golang ,客户端库是go-mysql-driver ,系统测试环境频繁但是不总是报出invalid conn 错误,但实际拿sql执行时却是正常执行。
蓝胖子的编程梦
2023/05/25
4110
mysql invalid conn排查
数据库相关异常分析
针对上面第一种情况,很容易从字面意义就得出是读取超时。然而查询资料 JDBC 存在多种 timeout,仔细研究了一下,梳理一下。
andyxh
2019/09/10
3.9K0
数据库相关异常分析
Mysql连接数据库异常汇总【必收藏】
在Centos上部署项目发现一个奇怪的问题,数据库连接一直抛异常。于是花了两个小时搜了各种数据库连接异常导致的原因,最终问题得以解决。同时,把解决过程中搜集到的异常信息汇总一下,当大家遇到类似的问题时,给大家以思路。必须珍藏。
程序新视界
2020/03/24
2.6K0
go-sql-driver源码分析
https://github.com/go-sql-driver 实现了基本的sql操作
golangLeetcode
2022/08/02
1.6K0
go-sql-driver源码分析
jdbc是数据库连接池么_java的jdbc连接数据库
JDBC 是Java应用程序用来连接关系型数据库的标准API,为多种关系型数据库提供一个统一的访问接口。Sun公司一共定义4种 JDBC 驱动类型,一般使用第4种,该类型的Driver完全由Java代码实现,通过使用socket与数据库进行通信。
全栈程序员站长
2022/09/30
3.2K0
jdbc是数据库连接池么_java的jdbc连接数据库
Go访问MySQL异常排查及浅析其超时机制
一、问题现象:通过监控发现访问MySQL偶尔出现异常,查看日志错误为unexpected EOF。
morganji
2019/02/11
3.6K0
Go数据库连接池设置不合理导致大量TIME_WAIT连接占满端口问题排查与解决
最近公司内部准备尝试使用下腾讯的TDSQL,因此组内同学写了一段很简单的查询TDSQL的go web程序,使用ab对其进行一个简单压测以获取TDSQL的性能表现,go代码如下:
Orlion
2024/09/02
2100
Go数据库连接池设置不合理导致大量TIME_WAIT连接占满端口问题排查与解决
记一次:lost connection to MySQL server during query
在执行select语句运行了100多秒然后现了lost connection to MySQL server during query错误信息 排查原因:
二货哈
2022/03/22
1.4K0
【云+社区年度征文】在Golang中如何正确地使用database/sql包访问数据库
本文记录了我在实际工作中关于数据库操作上一些小经验,也是新手入门golang时我认为一定会碰到问题,没有什么高大上的东西,所以希望能抛砖引玉,也算是对这个问题的一次总结。
HOHO
2020/12/18
1.9K0
【云+社区年度征文】在Golang中如何正确地使用database/sql包访问数据库
一文说清楚配置数据源的参数
鉴于在开发环境中,我们都使用过yml配置文件,而且我们在yml配置文件中,都加入过连接数据库的配置,也就是配置我们的连接池,但是对于不同的数据库,连接数据库的 Jar 包也都是不一样的,而且对应的配置也是不一样的,今天阿粉就来说说这个 SpringBoot 项目中的,配置数据库连接的各种参数以及不同的数据库,应该是如何配置的。
Java极客技术
2023/02/23
6720
一文说清楚配置数据源的参数
云数据库MySql故障切换下的应用重连配置最佳实践
云数据库 MySQL 支持单节点、双节点、三节点、集群版等架构,配合多可用区部署,可为用户业务提供高可用性支持,保证用户可以快速恢复数据库操作而无需管理干预,如出现可用区中断、主数据库实例故障(主实例因负载过高 hang 住、硬件故障等),数据库可以自动处理故障转移(实例切换),即主数据库实例(节点)会自动切换到备可用区的备用副本。日常的数据库运维过程中,数据库实例规格调整、数据库引擎版本升级等操作,也会可能涉及到实例切换。
云顾问-为您服务
2024/05/03
7680
【详解】MySQL重连,连接丢失:Thelastpacketsuccessfullyreceivedfromtheserve
在开发和运维MySQL数据库应用时,经常会遇到“连接丢失”或“重连失败”的问题。这类问题不仅会影响应用程序的稳定性,还可能导致数据不一致等严重后果。本文将探讨MySQL连接丢失的原因、如何诊断此类问题以及采取哪些措施来解决或预防。
大盘鸡拌面
2025/01/29
2990
数据库连接池技术 之 Druid[通俗易懂]
mysql是一个TCP/IP协议的网络程序,如果我们每次都从数据库获取新的连接,那么:
全栈程序员站长
2022/09/15
2.1K0
软件测试|connection-reset-by-peer问题定位
有同事报客户端请求某核心服务出现大量connection reset by peer。线上故障,赶紧高优定位处理。
霍格沃兹测试开发Muller老师
2023/01/04
1.1K0
Go实战准备工作---创建数据库连接池
此项目改写根据个人习惯来创建,实际项目准备工作不分先后顺序,准备好了就行,不需要纠结这个。 本项目属于公司内部项目,只是提供思路和关键代码 一:项目简介 项目属于智能客服平台的以及智能外呼子平台的项目,改写的只是PHP部分的代码,此项目是结合了Go和NLP以及Java共同实现的项目。PHP是负责web端和go端的数据交互,以及业务处理。本次改写除了基本的业务替换,还有性能的对比以及优化,没有这些改写也就毫无意义。此前PHP的版本是ThinkPHP3.2,相当古老,本次也是根据公司的需求按照实际情况来改写,
用户6680840
2022/06/08
7880
MySQL|Aborted connection 日志分析
这些日志到底是什么导致的呢?本文探讨一下 该 Warning 的成因。首先要提前说明的是MySQL 5.7 提供了新的日志输出内容控制参数 log_error_verbosity 该参数的值对应的影响如下:
用户1278550
2020/11/02
8.1K0
MySQL|Aborted connection 日志分析
nginx,ingress-nginx日常维护及报错
readv() failed (104: Connection reset by peer) while reading upstream
iginkgo18
2021/10/10
12.9K0
实现数据库连接池-前传
最近深感C++项目实践经验太少,所以想找个项目练练手,看到MySQL数据库连接池的项目时间比较短,代码行也还行,还能学到锁机制,多线程等,把之前听到的知识都实践一遍,何乐而不为呢!
无敌清风蓝
2024/06/04
1070
实现数据库连接池-前传
关于Aborted connection告警日志的分析
有时候,连接MySQL的会话经常会异常退出,错误日志里会看到"Got an error reading communication packets"类型的告警。本篇文章我们一起来讨论下该错误可能的原因以及如何来规避。
MySQL技术
2020/05/19
3.4K0
SpringBoot 报 No operations allowed after connection closed 异常解决办法
  MySQL 5.0 以后针对超长时间数据库连接做了一个处理,即一个数据库连接在无任何操作情况下过了 8 个小时后(MySQL 服务器默认的超时时间是 8 小时),MySQL 会自动把这个连接关闭。在数据库连接池中的 connections 如果空闲超过 8 小时,MySQL 将其断开,而数据库连接池并不知道该 connection 已经失效,这个时候你请求数据库链接,连接池会将失效的 connection 给你,so~,SpringBoot 温柔的告诉你 No operations allowed after connection closed。SpringBoot 2.0 以上版本,mysql-connector-java 默认使用的是 8.0 以上版本。
Demo_Null
2020/09/28
16.1K0
推荐阅读
相关推荐
mysql invalid conn排查
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验