Не удалось перевести имя хоста "localhost" в адрес: неизвестная ошибка сервера - PullRequest
0 голосов
/ 03 мая 2019

Я занимаюсь разработкой службы Windows с Qt-Framework и не могу подключиться к своей базе данных (Postgresql).

Но у меня есть клиентское приложение, в котором я использую точно такое же соединение с базой данных, и оноработает.

//driver
mDB = QSqlDatabase::addDatabase("QPSQL");

//connection
void Monitoring::DbConnection(QSqlDatabase mDB)
{
    mDB.setHostName("localhost");
    mDB.setDatabaseName("testdb");
    mDB.setPort(5432);
    mDB.setPassword("test");
    mDB.setUserName("12345");
    if (!mDB.open()) {
            qDebug() << "Database Error ! " << mDB.lastError();
            mMessagebox.critical(0, "Error", "An Error occurred! " 
                        + mDB.lastError().text());
            qApp->exit();
    }
}

LastError говорит:

не удалось перевести имя хоста "localhost" в адрес: неизвестная ошибка сервера

Что япропали без вести?

Заранее спасибо

1 Ответ

0 голосов
/ 03 мая 2019

Когда вы передаете аргумент, вы делаете копию для объекта, и, возможно, оператор = копирует не все данные.

Попробуйте использовать следующий код с & в аргументе:

//connection
void Monitoring::DbConnection(QSqlDatabase& mDB)
{
    mDB.setHostName("127.0.0.1");
    mDB.setDatabaseName("testdb");
    mDB.setPort(5432);
    mDB.setPassword("test");
    mDB.setUserName("12345");
    if (!mDB.open()) {
            qDebug() << "Database Error ! " << mDB.lastError();
            mMessagebox.critical(0, "Error", "An Error occurred! " 
                        + mDB.lastError().text());
            qApp->exit();
    }
}

...