如何解决未加载 QPSQL 驱动程序Qt6、Postgres-13
我尝试重复 QPSQL driver not loaded Qt 但它没有帮助我。我使用了 x64 Postgresql 和我的 Qt 应用程序也是 x64
m_dataBase.addDatabase("QPSQL");
m_dataBase.setHostName(g_hostName);
m_dataBase.setPort(g_databasePort);
m_dataBase.setDatabaseName(g_databaseName);
m_dataBase.setUserName(g_userName);
m_dataBase.setPassword(g_password);
qInfo() << "drivers:" << m_dataBase.drivers();
if( !m_dataBase.isDriverAvailable("QPSQL")) {
qWarning() << "Driver QPSQL is not available";
} else {
qInfo() << "QPSQL is available";
}
if (m_dataBase.open()) {
qInfo() << "Data base open SUCCESSFUL";
return true;
} else {
qWarning() << "Data base does not open";
qInfo() << "Last ERROR:" << m_dataBase.lastError().driverText();
}
我启用了
qputenv("QT_DEBUG_PLUGINS","1");
用于版本调试日志。 我在 cmd 中更新了 PATH 变量
SET PATH=D:\PostgresLib\lib;%PATH%
SET PATH=D:\PostgresLib\bin;%PATH%
在我在输出中看到的内容之后:
[06/05/2021 10:28:13.305] DBG line: QFactoryLoader::QFactoryLoader() looking at "C:/Qt/6.0.3/mingw81_64/plugins/sqldrivers/qsqlpsql.dll"
[06/05/2021 10:28:13.306] WAR line: Found metadata in lib C:/Qt/6.0.3/mingw81_64/plugins/sqldrivers/qsqlpsql.dll,metadata=
{
"IID": "org.qt-project.Qt.QSqlDriverFactoryInterface","MetaData": {
"Keys": [
"QPSQL"
]
},"archreq": 0,"className": "QPSQLDriverPlugin","debug": false,"version": 393216
}
[06/05/2021 10:28:13.306] DBG line: Got keys from plugin meta data QList("QPSQL")
[06/05/2021 10:28:13.306] DBG line: QFactoryLoader::QFactoryLoader() checking directory path "D:/Projects/Build/sqldrivers" ...
[06/05/2021 10:28:13.309] DBG line: loaded library "C:/Qt/6.0.3/mingw81_64/plugins/sqldrivers/qsqlpsql.dll"
[06/05/2021 10:28:13.309] INF postgresdatabase.cpp virtual bool PostgresDataBase::init() line:24 drivers: QList("QSQLITE","QODBC","QPSQL")
[06/05/2021 10:28:13.309] INF postgresdatabase.cpp virtual bool PostgresDataBase::init() line:29 QPSQL is available
[06/05/2021 10:28:13.309] WAR postgresdatabase.cpp virtual bool PostgresDataBase::init() line:36 Data base does not open
解决方法
问题出在未初始化的对象 QSqlDatabase m_dataBase; 使固定: 而不是这个字符串
m_dataBase.addDatabase("QPSQL");
我用
m_dataBase = QSqlDatabase::addDatabase("QPSQL");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。