Qt 5.15.2 编译MySQL8.0.42驱动,解决QSqlDatabase: QMYSQL driver not loaded问题

背景

        这两天没事看了眼boss直聘发现很多的公司还是要求要会MySQL,于是乎开始了我的踩坑之路!

        我几乎翻遍了csdn上有关于“QSqlDatabase: QMYSQL driver not loaded问题”,但是跟着人家的步骤一步一步,我的仍然一直报“driver not loaded”,终于!!!历经三天连接成功了!

        于是在此记录自己的踩坑经历,希望可以帮助到和我一样初学MySQL的同学。

环境

版本如下:

qt:5.15.2

MySQL:8.0.42

1、安装QT

这个网上教程特别多,我这里就不写了,建议大家采用在线安装方式(5.15好像也只能在线安装了),这样也方便后续添加组件或者按照别的版本。

注意:在线安装的速度比较慢,如果不采用镜像安装,可能会要等很久很久。。。

 找到在线安装包位置,输入cmd打开控制台

​
--mirror https://mirrors.ustc.edu.cn/qtproject

​

然后回车就会显示出QT安装界面了, 选择自定义安装。

默认是不显示6.x之前的版本了,

别慌!在右上角显示那里勾选上Archive

 

 点是,就会出现5.15.2了

这里需要注意的是 在安装时,一定要勾选上Sources选项,不然没有qt自带的编译MySQL驱动的mysql项目。

 

废话有点多。。。开始正题!

2、下载MySQL

去官网下载压缩包解压MySQL :: 下载 MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/

下载我框起来的这个

我前边说历经三天终于连接成功了,前两天半都是用的下载的这个然后编译驱动,一直就是显示

QSqlDatabase: QMYSQL driver not loaded问题,真的是坑了我整整两天多的时间,哎!

下载zip压缩包那个几分钟就成功了!我感觉上边那个MSI安装包应该也是可以用的,但是不知道为啥一直报QSqlDatabase: QMYSQL driver not loaded,打印明明有QMYSQL的驱动,有大神路过的可以指点一下~

3、通过qt自带mysql.pro项目编译mysql驱动 

这是我的路径,大家可以根据自己的安装路径去找,如果安装QT的时候没有勾选Soures选项,是没有Src文件夹的。

打开项目编译器可根据自己的需要选择,我选择的编译器为MinGW64。项目打开后,

(1)注释掉QMAKE_USE += mysql

(2)添加MySQL的头文件和库文件路径,这里是我的路径,大家需要根据自己的路径修改

(3)生成的目标库路径“DESTDIR”,可以不指定,会生成在你安装QT盘符下plugins/sqldrivers文件夹下(但是我并没有生成该文件夹所以指定了路径)

 

(4)需要修改qsqldriverbase.pri文件

把这句注释掉#include($$shadowed($$PWD)/qtsqldrivers-config.pri),不然会报找不到qtsqldrivers-config.pri的错

新增:include(./configure.pri)

(5)qmake,然后点击 构建,出现下方的库表示构建成功

mingw构建,目录下会生成qsqlmysql.dll、qsqlmysql.dll.debug,使用MSVC2019构建,则目录下会生成qsqlmysql.dll、qsqlmysqld.dll两个文件

4、把构建出来的库放到合适的位置 

我这里的路径是:D:\QT\5.15.2\mingw81_64\plugins\sqldrivers下

如果是msvc,放到D:\QT\5.15.2\msvc2019_64\plugins\sqldrivers

 然后将mysql-8.0.42-winx64 的lib和bin文件夹添加至系统环境变量中。

重启qt运行程序,下边附了测试代码

如果还是出现之前的问题,将mysql-8.0.42-winx64 bin文件夹下的libmysql.dll和libmysql.lib拷贝到D:\QT\5.15.2\mingw81_64\bin下重启qt运行程序

显示打开数据库成功

这样就成功啦!希望你们都可以成功连接MySQL。

 5、测试代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlDatabase>
#include <QMessageBox>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setPort(3306);
    db.setUserName("root");//你的账号
    db.setPassword("123456"); //你的密码
    db.setDatabaseName("test");//需要自己手动在MySQL中先创建一个数据库才可以

    bool ok = db.open();
    if(ok)
    {
        QMessageBox::information(this,"info","success");
    }
    else
    {
        QMessageBox::information(this,"info","open faied");
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值