Russian Qt Forum
Ноябрь 22, 2024, 17:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Соединение с несуществующей БД  (Прочитано 2624 раз)
INZER
Новичок

Offline Offline

Сообщений: 20


Просмотр профиля
« : Июнь 01, 2022, 23:11 »

Коллеги, добрый день,
Как обработать ошибку ошибочного ввода IP сервера БД?

Довольно стандартная функция подключения к БД:
Код:
void SqlQueryExecutor::slotOpenDbConnection(QString address, QString serverName, QString login, QString password)
{
    if (QSqlDatabase::database().isOpen())
    {
        QString connectionName = QSqlDatabase::database().connectionName();
        QSqlDatabase::database(connectionName).close();
        QSqlDatabase::removeDatabase(connectionName);
    }
    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
    db.setHostName(address);
    db.setDatabaseName(dbName);
    db.setUserName(login);
    db.setPassword(password);
    if (!db.open())
    {
        if (db.lastError().isValid())
            emit dbDbErrorAppears(db.lastError().type(), db.lastError().text(), serverName);
        return;
    }
    emit dbConnected(serverName);
}

Когда на сервере развернута БД все ок, соединение устанавливается, либо не устанавливается по каким то причинам.
Но если мы подключаемся по несуществующему IP поток зависает на функции open на довольно продолжительное время.
и в конце концов получаю ответ

could not connect to server: Время ожидания соединения истекло
   Is the server running on host "10.248.0.2" and accepting
   TCP/IP connections on port 5432?
QPSQL: Unable to connect

Как это время можно сократить?
Записан
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #1 : Июнь 02, 2022, 04:56 »

Привет.

Как вариант установить таймаут с помощью void QSqlDatabase::setConnectOptions(const QString &options = QString())
Записан
INZER
Новичок

Offline Offline

Сообщений: 20


Просмотр профиля
« Ответ #2 : Июнь 02, 2022, 07:11 »

Спасибо за подсказку Postgresql поддерживает опцию "connect_timeout"
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 23.