win10上Qt5.14.1+mingw64编译MySql5.7驱动,其他版本Qt也类似

首先是新建一个Qt工程,在pro文件中

QT  += sql
#include <QSqlDatabase>

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //QMYSQL是固定的
db.setHostName("127.0.0.1");
db.setDatabaseName("testdatabase"); //测试的数据库名
db.setUserName("root");  //mysql数据库用户名
db.setPassword("sunshine"); //这里写你的MySql数据库密码
bool ok = db.open();

if (ok)
{
    qDebug() << "connect ok";
}
else
{
    qDebug() << "connect failed";
}

如果你现在connect ok则,恭喜你不用自己编译MySql库了。如果报出MySql的驱动没有加载,则耐心继续一步步往下看,困扰了我两天多,终于解决了。我把一些踩坑的过程记录下来,以及编译成功的步骤也详细写出来,希望能帮到和我有一样需求的人。
Qt的帮助文档有篇专门写数据库驱动如何编译的“SQL Database Drivers”,可以去仔细研究这个,如果没有这个精力,也没关系,我们继续往下看:
一、确认一些环境设置以及软件版本

  1. Qt安装的时候勾选了安装Qt源码,否则就没有下面的自己编译数据库驱动这个过程。
  2. 安装的数据库版本和编译器的位数相同,如果是x64,则两者都是x64。举例:我的编译器是用的mingw73_64,x64位。在这里插入图片描述
    如何查看mysql是32位还是64位?
D:\MySQL_Server_5_7\bin>mysql -V
mysql  Ver 14.14 Distrib 5.7.29, for Win64 (x86_64)

mysql是64位的——win64
3. 环境变量
在这里插入图片描述
你的这个能出来,如果出不来,就去相应的目录去手动打开,建议最好右键管理员运行这个,不要用cmd。输入qmake,有以下输出,则没问题,可以继续。
在这里插入图片描述
4.其他一些非必须的环境变量设置
比如将MySql的bin目录,lib目录加入到环境变量中。这个应该是非必须的,我是前面踩坑多了,才安装网上的一些教程做的,后来编译成功发现这个应该是非必须的。

二、开始编译
步骤一
修改mysql.pro文件

D:\Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql

我的Qt安装路径是在D盘,你的也是按照这个路径格式去找

#QMAKE_USE += mysql

INCLUDEPATH += "D:/MySQL_Server_5_7/include"
LIBS += "D:/MySQL_Server_5_7/lib/libmysql.lib"

只需要注释掉一行#QMAKE_USE += mysql,前面加#号就是注释掉了。
加两行,一个是你的MySQL安装目录的include路径,一个是你的libmysql.lib路径位置。
我把完整的mysql.pro文件展示一下:

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin

INCLUDEPATH += "D:/MySQL_Server_5_7/include"
LIBS += "D:/MySQL_Server_5_7/lib/libmysql.lib"

include(../qsqldriverbase.pri)

这里要避免一些坑,你的MySql路径有空格,这是一个坑,处理方式有两种:方式一,加$$quote
方式二、重新安装MySql,这个代价比较大。
那就详细说说方式一怎么操作:
举例:引用自Qt在pro文件中加入带空格的路径

INCLUDEPATH += $$quote(C:\Program Files\MySQL\MySQL Server 5.7\include)
LIBS += $$quote(C:\Program Files\MySQL Server 5.7\lib\libmysql.lib)

步骤二
在这里插入图片描述
最好是右键管理员运行这个,如果普通双击打开也可以,貌似也可以,后面可能要手动复制一些东西。
在这里插入图片描述
cd 到你的sqldrivers目录,qmake,这个是为了生成qtsqldrivers-config.pri
在这里插入图片描述

qmake
mingw32-make
mingw32-make install

如果你没看到任何报错信息,则应该会在这个目录

D:\Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers

中看到生成的一些dll
在这里插入图片描述
后缀.debug的是debug版本,这个我有纳闷,应该是qsqlmysqld.dll,才是debug版本的,这个先不去细究。
可以将这个目录中除.a的文件外的,都复制到以下路径中(如果没有的话,就手动复制进来吧,如果有的话,也是一样的,因为上面的mingw32-make install就是自动复制到下面这个路径中)

D:\Qt\Qt5.14.1\5.14.1\mingw73_64\plugins\sqldrivers

步骤三、最后一步
在这里插入图片描述
将MySql安装目录中的这两个文件复制到D:\Qt\Qt5.14.1\Tools\mingw730_64\bin中。

步骤四、测试方法
和开头的一样,Qt建工程,连接MySql数据库,看看是否连接成功,具体可以参考这个:
https://blog.csdn.net/m0_37194132/article/details/85043349

另外,如果你本机没有安装MySql,那就去官网下个C驱动的包,安装上面的步骤一样可以编译Qt的MySql库。
下载路径:https://downloads.mysql.com/archives/c-c/
选择对应的zip压缩包下载,自行解压。

特别注意:8.0的 还需要其他dll,编译过程相似,但是拷贝的dll会更多,据群友反映8.0的需要拷贝的dllg更多。(以下截图为群友反映需要拷贝的,他的编译过程参照上面的,但是需要拷贝的dll更多,下面为他的截图)
在这里插入图片描述
需要多了拷贝这两个dll(如果你少了,你也试试多拷贝几个dll,针对8.0+的mysql,他用的是免密码连接的那种方式):

libcrypto-1_1-x64.dll
libssl-1_1-x64.dll

参考:
QT编译Mysql驱动问题及解决方案
QT编译mysql驱动
Qt5 Mingw/Mysql 8.0.15环境搭建

记录:Qt5.15+MinGW编译32位MYSQL8.0驱动

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值