昨天我帮人搭建一个考勤管理的项目,细节就不多说了,反正我搭建好项目,准备好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
则代表成功。
有问题请留言,我会在六小时内给与回复,大概 。