【Qt】Qt5.12.12构建64位QMYSQL数据库驱动

背景

今天尝试使用Qt打开sql文件,在调用QSqlDatabase::open()时,会报错:“driver not loaded

原因实际上是mysql 的驱动 qsqlmysql.dll 没有成功加载。

所以本篇文章将详细介绍一下:Qt5.12.12如何构建64位QMYSQL数据库驱动。

执行

写在最前,以下出现的文件路径为我自己电脑安装的路径,可根据自己的路径对应修改。

步骤一 系统环境变量(非必须)

可以将Qt和MySQL的路径都加入到系统环境变量的path内

win10:【开始菜单】-->【控制面板】---->【系统和安全】-->【系统】---->【高级系统配置(左侧)】---->【环境变量】

win7:【计算机】---->【属性】---->【高级系统配置】---->【环境变量】

【Qt】Qt5.12.12构建64位QMYSQL数据库驱动_第1张图片

选中【系统变量】内的【Path】点击【编辑】,将对应路径添加进去

这是我的Qt和MySQL的安装路径,对应各位安装路径填入即可 。

步骤二 mysql.dll

将 C:\mysql-5.7.21-winx64\lib 路径下的 libmysql.dll 文件复制至G:\Qt\5_12\Qt5.12.12\5.12.12\mingw73_64\bin

步骤三 mysql.pro

使用Qt Creator打开G:\Qt\5_12\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql路径下的mysql.pro

打开时会提示你使用什么编译,在这里我使用 MinGW64-bit 来编译,因为我MySQL安装的是64位的,所以使用64位的MinGW编译。

打开工程内的mysql.pro

将第六行的QMAKE_USE += mysql注释掉,修改为#QMAKE_USE += mysql(前面加#)

同时在下方添加如下几行代码

win32:LIBS += -LC:/mysql-5.7.21-winx64/lib -llibmysql

INCLUDEPATH += C:/mysql-5.7.21-winx64/include

DEPENDPATH += C:/mysql-5.7.21-winx64/include

另外,为了方便找到构建后的dll文件,可以在最后添加一句,可将构建的文件放在myLib文件夹内

DESTDIR = ../mysql/myLib

【Qt】Qt5.12.12构建64位QMYSQL数据库驱动_第2张图片

打开 qsqldriverbase.pri 

 将第4行 include($$shadowed($$PWD)/qtsqldrivers-config.pri) 注释掉然后在下面加入一行include(./configure.pri)

【Qt】Qt5.12.12构建64位QMYSQL数据库驱动_第3张图片

步骤四 构建 

构建当前工程,当编译完成后,在mysql.pro的根目录下会出现 myLib 文件夹,文件夹内会生成以下文件。

【Qt】Qt5.12.12构建64位QMYSQL数据库驱动_第4张图片

步骤五 导入驱动

 将 qsqlmysql.dll 和 qsqlmysqld.dll 文件复制到G:\Qt\5_12\Qt5.12.12\5.12.12\mingw73_64\plugins\sqldrivers 。

【Qt】Qt5.12.12构建64位QMYSQL数据库驱动_第5张图片

 至此,MYSQL的驱动编译就完成了

注意:

MySql的版本为要与编译器的版本为一致,比如我的MySql是64位的,我的编译器就需要使用MinGW73_64来编译mysql驱动,否则也会出问题。

测试

m_DB = QSqlDatabase::addDatabase("QMYSQL");  //添加MySql数据库
m_DB.setHostName("127.0.0.1");
m_DB.setPort(3306);
m_DB.setUserName("mylean");
m_DB.setPassword("123456");
if (!m_DB.open())
{
    QMessageBox::warning(this, "错误", "打开数据库失败"+ m_DB.lastError().text(), QMessageBox::Ok, QMessageBox::NoButton);
    return;
}

另外记得在.pro里面加入QT += sql

参考博客:

QT MYSQL 链接方法 QMYSQL driver not loaded解决方法 qt5.13 mysql5.7

Qt编译MySQL数据库驱动

你可能感兴趣的:(Qt,qt,数据库,开发语言)