bug记录:c++ mysql Connector:Lost connection to MySQL server during query

1.背景

    使用mysql connector1.1.4版本,代码中有 mysql 连接池,每次执行 sql 时从连接池取出一个连接,先用isClosed()判断为false继续使用,否则创建新连接。
    现在升级 mysql connector为1.1.13版本,业务代码未修改,服务运行正常,过一段时间后(1天左右),连接池所有连接检测正常,但是执行 sql 会报错:Lost connection to MySQL server during query

2.原因

    查询资料看到可能是 mysql wait_timeout 超时了,看下具体的配置命令show variables like '%timeout';
在这里插入图片描述
    这是28800秒,也就是8个小时
    可以简单验证下,把时间改短点,修改 wait_timeout 需要修改 interactive_timeout,修改后 wait_timeout 会跟着变。命令为 set global interactive_timeout=10; 这里改为10秒,经验证10秒后执行 sql 就会报错。
    旧版本 isClosed() 会同时判断连接是否被关闭以及调用ping命令,但是新版本只判断是不是调用了close,连接有效性的动作放到了isValid()里面。
在这里插入图片描述
bugs fixed
在这里插入图片描述

版本说明:https://dev.mysql.com/doc/relnotes/connector-cpp/en/news-1-1-5.html

3.解决

    弃用之前的isClosed(),改为!isValid()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值