Russian Qt Forum

Qt => Базы данных => Тема начата: alexandros от Сентябрь 20, 2012, 13:06



Название: Потеря соединения
Отправлено: alexandros от Сентябрь 20, 2012, 13:06
Вобщем ситуация такая:
есть сервер-мессенджер который использует соединение с базой данных Mysql расположенной на том же хосте что и сервер, база используется для хранения логинов и паролей, в течении дня сервер без проблем подключается и выполняет запросы, но на следующий день подключение к базе перестает работать, в чем может быть причина?

привожу код:

подключение
Код
C++ (Qt)
   dataBaseHandle = QSqlDatabase::addDatabase("QMYSQL");
   dataBaseHandle.setHostName(host);
   dataBaseHandle.setDatabaseName(dataBase);
   dataBaseHandle.setUserName(userName);
   dataBaseHandle.setPassword(password);
   if(dataBaseHandle.open()){
       echo("Database Successfull Connected");
   }else{
       echo("Database Error: "+dataBaseHandle.lastError().text());
   }
 

проверка на подключение и попытка соединения

Код
C++ (Qt)
void ServerMessager::dataBaseReconnect()
{
   if(!dataBaseHandle.isOpen()){
       if(dataBaseHandle.open()){
          ....
       }else{
         ...
       }
   }
   log("End DB Reconnect");
}
 

выполнение запросов
Код
C++ (Qt)
QSqlQuery setDelivery("query body",dataBaseHandle);
 


Название: Re: Потеря соединения
Отправлено: trot от Сентябрь 20, 2012, 13:55
Если нет активности со стороны клиента, то сервер СУБД через некоторое времы разрывает соединение.


Название: Re: Потеря соединения
Отправлено: alexandros от Сентябрь 20, 2012, 14:06
Если нет активности со стороны клиента, то сервер СУБД через некоторое времы разрывает соединение.

void ServerMessager::dataBaseReconnect()
{
    if(!dataBaseHandle.isOpen()){
        if(dataBaseHandle.open()){
           ....
        }else{
          ...
        }
    }
    log("End DB Reconnect");
}