超过8小时数据库长连接没有任何操作
Mysql服务主动断开连接导致sql语句执行不成功。
而此时如果用isopen()来判断,结果是失效的,此时会返回true,然后紧接着是失败。
解决方法:写个如下的函数,在事件循环或者你自己看什么地方合适,小于8小时的周期判断一下长连接状态。
bool SQLClass::Connect_Test()
{
//QMutexLocker locker(&My_mutex);
try
{
QSqlQuery query("SELECT 1 FROM DUAL", db);
if (!query.exec())
{
if (BeConnect)
{
QString ErrorStr = QString::fromLocal8Bit("数据库连接异常") + ":" + query.lastError().text();
comming(ErrorStr);
}
if (!Connect_DB())
{
return false;
}
else
{
QString ErrorStr = QString::fromLocal8Bit("数据库连接恢复");
comming(ErrorStr);
return true;
}
}
return true;
}
catch (...)
{
return false;
}
}