Russian Qt Forum

Qt => Базы данных => Тема начата: DpoHro от Декабрь 09, 2007, 23:25



Название: QSqlDatabase (mysql) на сервере лимит коннекта по времени простоя
Отправлено: DpoHro от Декабрь 09, 2007, 23:25
Как решается такая проблема?
собственно и не пашет прога :(
Вернее у меня стоят проверки в кверях, если возвращает фолз, то выводит в отдельное окно ошибки, так вот как только гляжу что мой коннект отваливается, квери возвращать начинают волзы соответственно.
Как поддержать коннект?


Название: Re: QSqlDatabase на сервере лимит коннекта по времени простоя
Отправлено: DpoHro от Декабрь 09, 2007, 23:34
Да и вообще странно, сервер убил подключение, а db.isOpen() возвращает тру...

Сервер MySQL


Название: Re: QSqlDatabase (mysql) на сервере лимит коннекта по времени простоя
Отправлено: DpoHro от Декабрь 10, 2007, 00:38
Хе хе, странно все это...
Если каждый раз при выполнении пакета запросов, открывать соединение, а по завершении закрывать, то все QSqlQuery - переменные, где хранятся выборки нужные для работы, видимо теряют дескриптор подключения и следовательно вылетает приложение с ошибкой при попытке их перебрать...
Но!
Когда подключение сервер сбросил, достаточно одного запроса, чтобы подключение возобновить... При этом ID подключения на сервере уже другое, но все работает без ошибок.

Я сделал функцейку, SupportConnection, и вызываю ее перед каждым пакетом запросов, в ней содержится :
Код:
while (!qq.exec(qs))
{
nIterator++;
if (nIterator==10) break;
}
if (nIterator==10)
{
Disconnected(); // Моя функция, сворачиваю и дизейблю контролы
db.close(); // Закрываю соединение
}

То есть если 10 раз запрос не удался,

Работает и создается иллюзия, что коннект постоянный :) !