Я знаю, что это старая версия, но это первый гугл-запрос на "MySQL-сервер ушел. QMYSQL: Невозможно выполнить запрос".
Кажется, 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 часов, кажется, слишком долго, чтобы поддерживать свободное соединение.