VS2019 + qt6及以上版本 + mysql5.7 及以上版本 解决QMYSQL driver not loaded 问题

引言

本文使用VS2019 + qt6.1.3 + mysql8.0.27 版本
最近一直用QT、MYSQL、VS2019构建项目,项目使用了MinGW 64bit编译器和MSVC2019_64编译器,都出现驱动无法加载。

QMYSQL dirver not loaded
available drivers: QSQLITE QODBC QPSQL

在网上找了很多种方法,进行了一个简单的总结,希望能帮助到后面的学习者和开发者

1. 安装QT、MYSQL(32位或64位两个软件要相同)

1我使用的QT版本为6.1.3(高版本应该同样适用)

MYSQL版本为8.0.27 64位

已安装可以跳过相应步骤

QT和VS2019的配置请自行百度

2. 安装VS2019

VS2019环境配置
VS2019的安装略过,记得安装时选上下图这个
在这里插入图片描述
如果已经安装好VS没选择该组件的
打开Visual Studio Installer选择修改进行添加
在这里插入图片描述

3. 安装QT

在线安装器下载
https://download.qt.io/official_releases/online_installers/
在这里插入图片描述
按需下载,下载完成后打开安装器,没有账号就点击Sign up自行注册一个,然后点击next。
在这里插入图片描述
如图勾选,这一选项主要是为公司职员设立,需要提供公司名称等,可以不用管。然后一直点击next。
在这里插入图片描述
选择第二个不发送报告,点击next。
在这里插入图片描述
根据自己的需要选择安装路径,路径必须为空文件夹且不能有中文汉字,不然会出现错误提示。勾选第一个自定义安装,可以根据用户需求选择安装组件。电脑性能较好,内存足够大也可以勾选第三个选项直接完全安装QT6.2。
在这里插入图片描述
接下来便是组件选择界面,根据系统以及自身需求进行选择,我也针对不同大版本给出了一定的建议。
在选择一个合适的版本之后,再多选择一个QT5任意版本,只选择其中的Sources和MSVA编译器选项,就是只下载源码和编译器,因为后面会用到。
针对QT6版本的选择建议如下:
在这里插入图片描述
针对QT5的选择建议如下:
32位和64位根据自己电脑二选一
在这里插入图片描述
在这里插入图片描述
组件选择完之后点击next,勾选同意用户协议
在这里插入图片描述
然后一直点击next等待安装完成即可

4. 安装MYSQL

下载64位32位的MySQL Community Server(要和QT版本相同位数),目前最新版本是8.0.27,
下载地址是https://dev.mysql.com/downloads/mysql/
选择下载压缩包,下载完成后解压即可,不用安装。
在这里插入图片描述

5. 检查有无驱动

打开QT安装目录
跳转到Qt\6.1.3\msvc2019_64\plugins\sqldrivers目录下
在这里插入图片描述
发现其中并没有MYSQL的驱动,这是因为自Qt5.12.3及以上,均没有mysql驱动了,所以需要自行编译配置。

6. 自编译驱动

打开qt安装目录找到:Qt\6.1.3\Src\qtbase\src\plugins\sqldrivers\mysql,如下图的目录.
在这里插入图片描述

根据网上大多数方法来说是修改mysql.pro文件,然后进行编译
但是在QT6版本中没有mysql.pro工程文件
这个时候就需要借助刚刚我们下载的其他版本的工程文件来帮助我们镜像编译
我选择的是Qt5.15.0的源码和MSVC2019编译器
在这里插入图片描述
跳转到QT5的Qt\5.15.0\Src\qtbase\src\plugins\sqldrivers\mysql 目录
QT5目录
QT6.1.3中Qt\6.1.3\Src\qtbase\src\plugins\sqldrivers\mysql下的所有文件复制到QT5.15.0的目录下
在这里插入图片描述
打开QT5中的Qt\5.15.0\Src\qtbase\src\plugins\sqldrivers\mysql\ mysql.pro
选择QT5版本的MSVC 2019编译器,如果只下载了5.15.0的源码,那么就不会有上面两个编译器
在这里插入图片描述

修改内容 路径请根据自己的安装目录进行修改

注释掉
#QMAKE_USE += mysql
​
末尾添加以下四行代码
include(D:\Qt\5.15.0\Src\qtbase\src\plugins\sqldrivers\configure.pri)
​
INCLUDEPATH += "D:/mysql-8.0.27-winx64/include"
LIBS += "D:/mysql-8.0.27-winx64/lib/libmysql.lib"
DEPENDPATH += "D:/mysql-8.0.27-winx64/include"

如图:
在这里插入图片描述
然后修改Qt\5.15.0\Src\qtbase\src\plugins\sqldrivers\qsqldriverbase.pri 文件中语句:

注释 
#include($$shadowed(\$$PWD)/qtsqldrivers-config.pri)
添加
include(./configure.pri)

如图:
在这里插入图片描述
再然后去修改Qt\5.15.0\msvc2019_64\mkspecs\common\msvc-version.conf
在这里插入图片描述
在前面添加

QMAKE_MSC_VER = 1919 

其中的具体数值是根据MSVC版本不同来决定的,可以通过文件下面的函数来选择
例如:VS2008 对应的就是1499
VS2010 对应的就是1599
在这里插入图片描述

然后就回到刚刚打开的mysql.pro工程文件,只点击左下角的小锤锤Debug和Release分别各点击一次
在这里插入图片描述
构建完成之后,会在D:\plugins\sqldrivers目录下有这些文件(工程文件在哪个磁盘就去哪个磁盘下找)
在这里插入图片描述
选择其中.dll和.pdb为后缀名的所有文件进行复制
在这里插入图片描述
复制到QT6下的Qt\6.1.3\msvc2019_64\plugins\sqldrivers目录
在这里插入图片描述
再把D:\mysql-8.0.27-winx64\lib目录下的libmysql.dll文件
在这里插入图片描述
复制到QT6的\Qt\6.1.3\msvc2019_64\bin文件夹中
在这里插入图片描述
之后重新运行VS的程序吧,就可以正常连接到MYSQL数据库了


版权声明:本文为S_mile_W原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。