Qt5、C++:未加载 QMYSQL 驱动程序

Posted

技术标签:

【中文标题】Qt5、C++:未加载 QMYSQL 驱动程序【英文标题】:Qt5, C++: QMYSQL driver not loaded 【发布时间】:2019-10-23 17:34:30 【问题描述】:

我正在尝试使用带有 Qt 的 mysql 服务器连接到数据库。它不起作用,当我运行代码时,我收到以下错误消息。

QSqlDatabase:未加载 QMYSQL 驱动程序 QSqlDatabase:可用驱动程序:QSQLITE QODBC QODBC3 QPSQL QPSQL7 无法连接到数据库,请检查您的连接详细信息。

在过去的四 (4) 天里,我一直在尝试这个,我不想逃避这个问题。所以,我真的很感谢任何人的帮助。我看过几个类似的帖子,但没有一个对我有帮助。我已将文件 libmysql.dll 和 libmysqld.dll 复制到我能找到的每个可能的 bin 中,但这些都不起作用。 我注意到我的错误消息和其他人收到的错误消息有很大不同。 'MYSQL' 甚至没有被列为我得到的错误行中的可用驱动程序之一,如下所示。这说明了什么?

QSqlDatabase:可用驱动程序:QSQLITE QODBC QODBC3 QPSQL QPSQL7

#*******This is my main.cpp file**********

#include <QCoreApplication>
#include <QtSql/QtSql>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>

//Adding the i/o stream
#include <iostream>
using namespace std;


int main(int argc, char *argv[])

    QCoreApplication a(argc, argv);

//Creating a database connection
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setUserName("root");
db.setPassword("");
db.setDatabaseName("qtdatabase");

//Testing the connection
if(db.open()) 
    cout << "Database connected successfully" << endl;

 else 

    cout << "Unable to connect to the database check your connection details." << endl;



    return a.exec();



#********This is my mysqlconnect.pro file**********

QT += core
QT += sql
QT -= gui

CONFIG += c++11 console

TARGET = mysqlconnect

CONFIG -= app_bundle


SOURCES += \
        main.cpp

# Default rules for deployment.
qnx: target.path = /tmp/$$TARGET/bin
else: unix:!android: target.path = /opt/$$TARGET/bin
!isEmpty(target.path): INSTALLS += target



win32: LIBS += -L$$PWD/../../../../Users/user/Desktop/lib/ -llibmysql

INCLUDEPATH += $$PWD/../../../../Users/user/Desktop
DEPENDPATH += $$PWD/../../../../Users/user/Desktop


我不知道为什么我有这么大的 Qt 大小。您可以在附加的图像中看到它。一个显示了实际的文件夹大小,当我单击已安装的 Qt 文件夹时,我在文件夹中看到了 5.12.4 和 5.13.0 版本。这正常吗?请在此处附上图片。

【问题讨论】:

【参考方案1】:

表示QMYSQL插件不可用或无法加载成功。尝试将QT_DEBUG_PLUGINS environment variable 设置为非零值,并查看可执行文件尝试加载 MySQL 插件时发生的情况。 在大多数情况下,这是因为插件找不到您已经提到的 MySQL 客户端库。

如果您使用的是 Qt Creator,请注意从左到右的红色箭头。您可以在此处添加 run 环境变量:

【讨论】:

感谢您到目前为止的回复。但我只尝试了这段代码'qDebug() 刚刚编辑了我的答案,包括如何在 Qt Creator 中设置环境变量 非常感谢 Soheil 的回复和所附图片。很抱歉迟到了。我听从了你的建议。是的,我正在使用 Qt Creator。当我添加 QT_PLUGINS_ENVIRONMENT 变量并运行应用程序时,我得到以下输出控制台中显示的内容。 "插件 'C:/Qt/5.13.0/mingw73_64/plugins/sqldrivers/qsqlite.dll' 使用不兼容的 Qt 库。(不能混合调试和发布库。)" 不是插件 QFactoryLoader ::QFactoryLoader() 正在查看“C:/Qt/5.13.0/mingw73_64/plugins/sqldrivers/qsqlited.dll” 在 lib C:/Qt/5.13.0/mingw73_64/plugins/sqldrivers/qsqlited.dll 中找到元数据, metadata= "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", "MetaData": "Keys": [ "QSQLITE" ] , "archreq": 1, "className": "QSQLiteDriverPlugin", "调试”:真,“版本”:331008 如您所见,其他驱动程序的类似消息,但请没有'QMYSQL'。从插件元数据(“QODBC3”、“QODBC”)获取密钥 QFactoryLoader::QFactoryLoader() 查看“C:/Qt/5.13.0/mingw73_64/plugins/sqldrivers/qsqlpsql.dll” 在 lib C:/ 中找到元数据Qt/5.13.0/mingw73_64/plugins/sqldrivers/qsqlpsql.dll,元数据= “IID”:“org.qt-project.Qt.QSqlDriverFactoryInterface”,“元数据”:“键”:[“QPSQL7”,“ QPSQL" ] , "archreq": 0, "className": "QPSQLDriverPlugin", "debug": false, "version": 331008

以上是关于Qt5、C++:未加载 QMYSQL 驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

qt5.1.1 mysql ubuntu QMYSQL驱动未加载

PyQt5 QMYSQL 驱动程序未加载

同样,未加载 QT 5.12.2 QMYSQL 驱动程序。图书馆虽然

qt 5.8 sql 连接错误:Windows 10 上未加载 QMYSQL 驱动程序

Qt:Windows 10:未加载 QMYSQL 驱动程序

QMYSQL 可用但无法加载