无法将主机名“ localhost”转换为地址:未知服务器错误

时间:2019-05-03 14:57:50

标签: c++ postgresql qt database-connection

我正在使用Qt-Framework开发Windows服务,但无法连接到数据库(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 :(得分:0)

当您传递参数时,您正在为对象创建副本,也许=运算符未复制所有数据。

在参数中使用&并尝试以下代码:

//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();
    }
}