解决 QT -MYSQL:QMYSQL driver not loaded

  1. 以QT 5.14.1和Mysql 8.0.29为例
    QT 下载链接:Index of /archive/qt 选择自己需要的版本下载。
    Mysql:下载链接:MySQL :: Download MySQL Community Server,同样选择需要的版本下载
  2. QT安装时选择的位数最好和Mysq的位数一致。
    查看QT编译器版本:

    这里选择的是64位的编译器;
    或者是安装时选择像我这样选择:(32和64都选)
    注意:::一定要选Sourcs,别的除了图上的都可以不选,有需要再选,本次只用到这些
  3. 如果已经安装了Sourcs,QT安装目录中会有如图Src文件夹:

    如果没有Src,可以单独进入QT下载网站下载,在对应版本的single目录下:
    例如:qt-everywhere-src-xxx.zip;  自己建立Src文件夹,全部解压到其中。

    解压后如图:
  4. 查看Mysql位数:
    mysql -h localhost -u root -p;  #登录mysql
    
    \s; #查看版本,位数;
    

    例如:

    图中是64位

  5. 用QT打开D:\qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro
    如图:

    打开后编辑mysql.pro:

    更改文本内容为:         一定要把QMAKE_USE += mysql#注释掉

        添加了三处内容:

                第一处:INCLUDEPATH 后面是mysql的include文件夹位置
                第二处:LIBS是lib文件夹中libmysql.lib的位置
                第三处:可以直接复制
                第一二处要按照自己的Mysql安装位置修改

                修改完成后选择对应位数的编译器,这里选择的是64位的:

                         

                点击构建:左下角小锤子
                                                          

        构建完成后D:\qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql里面会多出一个lib文件夹,里面有构建完的文件:


将三个文件都复制到 D:\qt5.14.1\5.14.1\mingw73_64\plugins\sqldrivers 绿色标记是构建时选择的编译器,如图是复制完的:

然后,如图示把Mysql目录中的两个文件复制


粘贴到D:\qt5.14.1\5.14.1\mingw73_64\bin中:

最后下载对应版本的Mysql Connector/C++
地址:MySQL :: Download Connector/C++
如图:

解压后,进入lib64文件夹,只需要复制其中两个文件libssl-1_1-x64.dll和libcrypto-1_1-x64.dll

 将其复制到C:\windows\system32

大功告成!!!

测试代码:(建立widget的空窗口工程)

#include "widget.h"
#include <QSqlDatabase>
#include <QDebug>
#include <QMessageBox>
#include <QSqlError>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //打印当前系统支持的数据库驱动--即支持哪些数据库产品
    qDebug()<< QSqlDatabase::drivers();

    //操作数据库
    //告知当前程序访问哪个类型的数据库
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost"); //设置主机地址
    db.setUserName("root"); //设置用户名
    db.setPassword("passwd"); //设置连接密码
    db.setPort(3306); //设置连接端口
    db.setDatabaseName("test");

    //打开数据库
    if(!db.open()) //打开数据库失败提醒用户,使用QMessageBox;
    {
        QMessageBox::warning(this,"xxx",db.lastError().text());
    }
    else //成功
    {
        QMessageBox::warning(this,"+++","连接成功");
    }
}

Widget::~Widget()
{
}

 成功结果:
应用程序输出中应有:QMYSQL

窗口会弹出:


参考文章:​​​​​​(11条消息) 解决问题 Qt + MySql:"QSqlDatabase: QMYSQL driver not loaded"_sigmarising的博客-优快云博客

 QMYSQL driver not loaded错误解决方案 - 灰信网(软件开发博客聚合) (freesion.com)

                        

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值