MacOS下Qt6连接PostgreSQL提示Driver not loaded问题求助
MacOS Ventura 13.1下Qt6.4加载PostgreSQL 15.1驱动失败的解决方法
1. 检查Qt驱动文件及依赖
- 定位Qt的SQL驱动目录:你的Qt安装在
/users/murzabaev/Qt/,对应Qt6.4的驱动路径为/users/murzabaev/Qt/6.4.x/macos/plugins/sqldrivers(将6.4.x替换为你实际的Qt子版本号) - 查看目录下是否存在
libqsqlpsql.dylib文件,执行以下命令检查其依赖:otool -L /users/murzabaev/Qt/6.4.x/macos/plugins/sqldrivers/libqsqlpsql.dylib - 如果输出中
libpq.5.dylib显示为not found,说明驱动无法找到PostgreSQL的库文件,需要修复依赖路径。
2. 修复驱动依赖路径
brew安装的PostgreSQL 15.1库路径为/opt/homebrew/Cellar/postgresql@15/15.1/lib/libpq.5.dylib,使用install_name_tool修改驱动的依赖:
install_name_tool -change libpq.5.dylib /opt/homebrew/Cellar/postgresql@15/15.1/lib/libpq.5.dylib /users/murzabaev/Qt/6.4.x/macos/plugins/sqldrivers/libqsqlpsql.dylib
修改完成后,再次用otool -L验证依赖是否正常。
3. 配置项目.pro文件
在Qt项目的.pro文件中添加PostgreSQL的头文件和库路径:
INCLUDEPATH += /opt/homebrew/Cellar/postgresql@15/15.1/include LIBS += -L/opt/homebrew/Cellar/postgresql@15/15.1/lib -lpq
保存后重新构建项目。
4. 验证PostgreSQL服务及权限
- 检查PostgreSQL服务状态:
若brew services listpostgresql@15未启动,执行以下命令启动服务:brew services start postgresql@15 - 手动测试数据库连接,确保用户和数据库权限正常:
若能成功进入数据库命令行,说明权限和数据库配置无问题。psql -U murzabaev -d pr8
5. 优化代码的连接验证
修改你的连接代码,增加错误检查,避免仅依赖driverName判断:
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL"); db.setHostName("localhost"); db.setDatabaseName("pr8"); db.setUserName("murzabaev"); db.setPassword("*****"); qDebug() << "Available drivers:" << QSqlDatabase::drivers(); if (!db.open()) { QMessageBox::critical(0, "Connection Failed", db.lastError().text()); } else { QMessageBox::information(0, "Success", "Connected to PostgreSQL"); }
内容的提问来源于stack exchange,提问作者Chingiz
相关产品推荐
相关产品推荐

