QT5使用MySQL数据库配置,复制文件依然出现QSqlDatabase: QMYSQL driver not loaded 包括如何编译qsqlmysql.dll,亲测可用
再配置QT5+MySQL数据库的过程中始终无法解决QSqlDatabase: QMYSQL driver not loaded问题,包括网上所说的例如:复制文件就可以使用,32位和64位的问题。这些能解决基本上是碰运气,不能根本解决问题。
因为新版本的QT5自身不在带有mysql驱动,看了一下包括很多其他的数据库也不包括,当然不排除你很有钱买的企业版,相信大家都是开源版,废话有点多,让我们开始吧
第一步:安装QT
安装qt5基本上就不用说了,要不你也不会遇到QSqlDatabase: QMYSQL driver not loaded的问题,但是要注意以下几点:
- QT的版本 :我是用的是windows10 5.13.1 32位
- 在安装时时候安装了MinGW_32:如果你需要跨平台编译,建议使用这个
注意:要有下图这个
第二步:不需要安装MySQL
但是不安装的话需要下载mysql的源码(注意图片中划线两个文件夹必须要有),比如:
mysql-connector-c-6.1.3-win32
第三步:准备编译需要的文件
- 找到qt中MySQL的源码所在的文件夹我的是D:\Qt\Qt5.13.1\5.13.1\Src\qtbase\src\plugins\sqldrivers\mysql
- 打开到文件夹修改mysql.pro
原本的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
include(../qsqldriverbase.pri)
注释QMAKE_USE +=mysql,添加mysql头文件路径修改完后如下:
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
include(../qsqldriverbase.pri)
//下方为我mysql-connector-c-6.1.3-win32所放的位置,注意下方路径名称
INCLUDEPATH +="F:\XLDOWNLOAD\mysql-connector-c-6.1.3-win32\mysql-connector-c-6.1.3-win32\include"
LIBS +="F:\XLDOWNLOAD\mysql-connector-c-6.1.3-win32\mysql-connector-c-6.1.3-win32\lib\libmysql.lib"
第四步:开始编译
首先打开之前所说的Mingw32
cd 进入qt所提供的mysql源码的文件夹
如果发生错误检查mysql.pro中是否注释QMAKE_USE += mysql;没有就注释掉
输入qmake使文件夹中产生makefile文件
如果qmake时返回qmake不是内部命令的情况需要配置系统环境变量
输入mingw32-make
我这个是已经make过的,如果没有make过会有很多东西,如果发生错误检查mysql.pro中INCLUDEPATH +=和LIBS +=后面的路径对不对。
输入mingw32-make install
如果make成功没有报错,基本这步就没有问题。
查看编译完成的文件
如果编译成功,在plugins/sqldrivers中就会有我们需要的两个文件。
第五步:复制文件
将编译好的文件复制到mingw32文件夹中
qsqlmysql.dll&qsqlmysqld.dll>>Qt5.13.1\5.13.1\mingw73_32\plugins\sqldrivers
将mysql-connector-c-6.1.3-win32/lib中的
libmysql.dll&libmysql.lib>>Qt5.13.1\5.13.1\mingw73_32\bin