You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

连接PostgreSQL遇问题:已解决QPSQL驱动加载错误仍无法连接

Qt连接PostgreSQL失败:用户认证问题排查方案

问题背景

已解决QPSQL驱动未加载问题(复制Qt对应.dll到项目目录),但仍无法连接PostgreSQL,连接代码如下:

inline bool createConnection(){
    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
    db.setHostName("127.0.0.1");
    db.setDatabaseName("ed_sim");
    db.setUserName("postgres");
    db.setPassword("89256328258i");
    db.setPort(5432);
    if(!db.open()){
        QMessageBox::warning(0, "Database error", "Connection with BD!");
        qDebug() << db.lastError().text();
        return false;
    }
    else{
        QMessageBox::information(0, "Connect", "Great");
        return 1;
    }
}

启动后报错(核心信息):

connection to server at "127.0.0.1", port 5432 failed: ?????:
???????????? "postgres" ?? ?????? ??????? ?????????? (??
??????)
QPSQL: Unable to connect

排查与解决步骤

  • 确认PostgreSQL服务状态
    打开Windows服务管理器(Win+R输入services.msc),找到PostgreSQL相关服务,确保处于「正在运行」状态,未运行则手动启动。

  • 验证数据库与账号有效性
    用PostgreSQL自带的psql命令行或pgAdmin工具,尝试用账号postgres、密码89256328258i连接ed_sim数据库:

    • 若无法登录,先确认密码是否正确,或ed_sim数据库是否已创建(可在pgAdmin的「Databases」列表中查看)。
  • 修改PostgreSQL认证配置
    这是此类问题最常见的原因:PostgreSQL默认认证规则限制了本地连接。

    1. 找到PostgreSQL安装目录下的data文件夹(例:C:\Program Files\PostgreSQL\15\data,版本号依实际情况调整);
    2. 打开pg_hba.conf文件,找到IPv4本地连接配置段:
      # IPv4 local connections:
      host    all             all             127.0.0.1/32            scram-sha-256
      
    3. 将认证方式改为md5(兼容多数场景):
      host    all             all             127.0.0.1/32            md5
      
    4. 保存文件后,重启PostgreSQL服务使配置生效。
  • 代码细节优化
    代码中return 1;可改为return true;,保持bool返回值的类型一致性;也可增加qDebug() << db.lastError().type();输出错误类型,辅助定位问题。


内容的提问来源于stack exchange,提问作者Gelly Houp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:32:47