我使用 c++ 和 mysql++ 库。我在每个线程上有单独的 mysqlpp::Connection 对象。所有 mysqlpp 选项都是默认的(ReconnectOption 被禁用)。每个线程都与 MariaDB 服务器保持持久连接。在一系列 SQL 查询之前,我进行以下检查:
try
{
if (!connection.ping()) connection.connect(db_cfg.name.c_str(),
db_cfg.server.c_str(),
db_cfg.user.c_str(),
db_cfg.password.c_str(),
db_cfg.port);
}
此代码很少产生以下 SIGSEGV:
#0 0x00007fe0a625eb46 in ?? () from /usr/lib/x86_64-linux- gnu/libmysqlclient.so.20
#1 0x00007fe0a6251b26 in mysql_ping () from /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20
#2 0x00007fe0ab6773b1 in mysqlpp::Connection::ping() () from /usr/lib/libmysqlpp.so.3
我试图通过在无限循环中运行带有 ping/connect 调用的测试程序来重现此错误。在执行期间,我手动重新启动了 MariaDB 服务器。但是我没有成功复制。您有任何解决方法的想法吗?谢谢你。
操作系统:Ubuntu 64 位