关于Qt中出现QSqlDatabase: QMYSQL driver not loaded的解决方案

Qt连接Mysql的时候出现了驱动没有装载的情况,在网上找了很多方法,最终成功使得available drivers当中出现了QMYSQL,但是依然无法加载驱动,折腾了半天终于跟着官方文档解决了问题。想起以前也这么折腾过一次,吸取教训,赶紧记录一下以防日后又忘记。

背景

Qt版本:Qt 5.13.0
编译器:mingw73_64
MySQL:MySQL Connector C 6.1.11,这里没有安装完整的MySQL,因为仅仅需要连接服务器上的数据库

踩坑过程

根据网上大部分人的方法,使用Qt的图形化界面对sqldriver目录下mysql.pro进行编译,我的目录是

F:\Softwares\Qt\5.13.0\Src\qtbase\src\plugins\sqldrivers\mysql

然后把编译生成的两个dll文件,copy至编译器的sqldrivers目录下,我的目录是

F:\Softwares\Qt\5.13.0\mingw73_64\plugins\sqldrivers

最后再把MySQL的libmysql.dll复制到编译器的bin目录下,我的目录是

F:\Softwares\Qt\5.13.0\mingw73_64\bin

然而,编译完成后,结果如下
在这里插入图片描述
可以说,非常的难受

解决方法

最后在Qt官网找到了解决方案,根据官网的说明,实际上仅需下载MySQL Connector C,另外官网也给了说明

Note: As of MySQL 8.0.19, the C Connector is no longer offered as a standalone installable component. Instead, you can get mysql.h and libmysql.* by installing the full MySQL Server (x64 only) or the MariaDB C Connector.

从8.0.19版本开始不再提供独立的Connector C了

这里要确定64位的connector要对应64位的Qt,我选择的是64位Archive版(免安装),确认有以下三个文件

<MySQL dir>/lib/libmysql.lib
<MySQL dir>/lib/libmysql.dll
<MySQL dir>/include/mysql.h

随后,打开Qt的命令行工具Qt 5.13.0 (MinGW 7.3.0 64-bit),输入以下指令

cd %QTDIR%\qtbase\src\plugins\sqldrivers
qmake -- MYSQL_INCDIR="C:/Program Files/MySQL/MySQL Connector C 6.1/include" MYSQL_LIBDIR="C:/Program Files/MySQL/MySQL Connector C 6.1/lib"
mingw32-make sub-mysql
mingw32-make install

需要将MYSQL_INCDIRMYSQL_LIBDIR后的路径替换成自己的,例如我的地址是

MYSQL_INCDIR="F:\Tools\mysql connector c 6.1.11\include"
MYSQL_LIBDIR="F:\Tools\mysql connector c 6.1.11\lib"

运行完以后会在以下目录生成两个dll文件qsqlmysql.dllqsqlmysqld.dll(以我为例)

F:\Softwares\Qt\5.13.0\mingw73_64\plugins\sqldrivers

最后,再将libmysql.dll复制到以下目录即可(以我为例)

F:\Softwares\Qt\5.13.0\mingw73_64\bin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值