您现在的位置是:首页 >技术教程 >bug记录:c++ mysql Connector:Lost connection to MySQL server during query网站首页技术教程
bug记录:c++ mysql Connector:Lost connection to MySQL server during query
简介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()。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





U8W/U8W-Mini使用与常见问题解决
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结