MySQL Server已经消失了
-
26-09-2019 - |
题
在这里,我的代码片段:
query.next();
qDebug()<<query.lastError();
qlonglong res=query.value(0).toLongLong();
qDebug()<<query.lastError();
以及我拥有的相应日志:
Debug: QSqlError(2006, "QMYSQL: Unable to execute query", "MySQL server has gone away")
Warning: QSqlQuery::value: not positioned on a valid record
Debug: QSqlError(2006, "QMYSQL: Unable to execute query", "MySQL server has gone away")
通常,我的程序工作正常(它在服务器上工作并接受客户端的连接),但是每天早晨,当我尝试连接它时,我都会收到上面的消息。
MySQL Server有什么问题?
其他提示
我知道这是旧的,但恰好是“ MySQL Server已经消失了Qmysql:无法执行查询”的第一个Google命中。
QSQLDATABASE :: ISOPEN()似乎仍然会返回True,即使我们没有连接。这是我抓住它的方式:
QSqlDatabase db = QSqlDatabase::database();
QSqlQuery query(db);
QString q = "SELECT * FROM myTable;";
if (!query.exec(q))
{
int err = query.lastError().number();
if (err == 2006) // Might want to do #2013 here also?
{
db.close();
if (db.open() && !query.exec(q))
{
// handle error here we still failed...
}
}
else
{
// handle normal query errors here
}
}
我能够通过“ /etc/init.d/mysql restart”重新启动服务器来模仿这种情况,并继续向其发送查询,并最终引发此错误。我觉得这不应该更改服务器端,实际上8小时似乎很长,可以保持空闲连接的打开状态。
不隶属于 StackOverflow