QSqlDatabase: QMYSQL driver not loaded的解决方案

昨天我帮人搭建一个考勤管理的项目,细节就不多说了,反正我搭建好项目,准备好sql环境,提示:QSqlDatabase: QMYSQL driver not loaded,然后debug到现在…
不管如何,我给出我的解决方案,希望这篇文章能够帮助到你。

Qt连接MySql需要先连接到Qt的数据库插件,之后连接到MySql的动态库,才能够使用MySql。
动态库插件是mysql自带的,数据库插件我们需要自己编译。
虽然有些繁琐,但并不困难。

安装和配置环境变量

在这里插入图片描述
这里一定要勾选Source源码文件夹用于后面的编译。
不管你项目的运行库(kit)是什么,接下来的步骤都是一样的。只不过数据库插件和动态库插件放的位置不同,你的项目用哪个库,就把数据库插件和动态库插件放到QT下的哪个库。
环境变量配置我就不多说了,想必出现这个bug的都已经配置好了。

编译mysql驱动

打开文件夹D:\QT\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
当然安装位置我们可能不同,如果没有Src的话看第一步。
在Qt中打开mysql.pro
注释掉QMAKE_USE += mysql,加入三行代码:

win32:LIBS += -LD:\mysql\lib\ -llibmysql
INCLUDEPATH += D:/MySql/include
DEPENDPATH += D:/MySql/include

第一行是使用\mysql\lib\下的libmysql文件夹,第二三行是使用/MySql/include文件夹
效果如下:
在这里插入图片描述
注意哦,这里路径中一定不可以有空格
如果mysql路径有空格,需要重装。
所以说是真的麻烦啊
之后构建文件,在根目录的D:\plugins\sqldrivers下找到三个或者四个文件:
在这里插入图片描述
生成的qsqlmysql.dll qsqlmysqld.dll 拷贝至Qt所对应mingw的sqldrivers中。
我这里是三个,测试也可以。

拷贝sql动态库

拷贝mysql的动态库,将 mysql/lib 中的 libmysql.dll (动态库)拷贝至Qt所对应编译器的bin目录下

测试连接

新建项目,或者已有不冲突的项目
在.pro文件中加入QT += sql
使用如下代码打印可用的数据库版本

#include "mainwindow.h"
#include <QDebug>
#include <QApplication>
#include <QtSql/QtSql>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QStringList drivers = QSqlDatabase::drivers();  //获取现在可用的数据库驱动
    foreach(QString driver, drivers)
    qDebug() << driver;

    MainWindow w;
    w.show();
    return a.exec();
}

出现:QMYSQL
在这里插入图片描述
则代表成功。

有问题请留言,我会在六小时内给与回复,大概

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值