当你看到我这篇文章的时候,你应该已经在互联网上搜索了很多篇的解决方案,但是即使这样,你最后可能也会出现,QMYSQL driver not loaded的问题,本文与其他文章不同的地方在于,最后一步,解决了这一步,你就能找到为什么明明按照步骤做了,但是依然使用不了mysql驱动的问题。
在两台全新的机器上,从0安装mysql8.X、QT5.12进行测试,亲测可用。
安装环境
Windows
QT 5.12.12版本
mysql 8.x 系列
QT 在安装时选择Sources
QT 在安装时选择64位MinGw
mysql安装在C盘,地址为C:\Program Files\MySQL\MySQL Server 8.0
QT安装在D盘(这个随意,默认安装在C盘也可以),地址为D:\Qt\Qt5.12.12\5.12.12
步骤
STEP1:
找到QT上编译驱动的工程文件
地址为C:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql
- 使用QT打开该项目后,先修改mysql.pro文件。
将最后两行的路径改为自己电脑上的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)
DESTDIR = $$PWD/lib
INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 8.0\include"
LIBS += "C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.lib"
- 再修改qsqldriverbase.pri文件
将第四行的路径改为自己电脑上的qt路径
QT = core core-private sql-private
# For QMAKE_USE in the parent projects.
include(D:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\configure.pri)
PLUGIN_TYPE = sqldrivers
load(qt_plugin)
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
- Build编译一下项目
STEP2:
将生成的dll文件复制到D:\Qt\Qt5.12.12\5.12.12\mingw73_64\bin
文件夹中
首先,将文件夹C:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql\lib
中的qsqlmysql.dll、qsqlmysqld.dll文件复制到D:\Qt\Qt5.12.12\5.12.12\mingw73_64\plugins\sqldrivers
文件中。
其次,将文件夹C:\Program Files\MySQL\MySQL Server 8.0\lib
中的ibmysql.dl、libmysql.lib文件复制到D:\Qt\Qt5.12.12\5.12.12\mingw73_64\bin
文件夹中。
做到这步,如果你运行一下包含使用mysql的项目,没有输出QMYSQL driver not loaded问题,那么恭喜🎉🎉🎉,你不需要看最后一步,完美的避开了坑。
STEP3:
为什么我们做完上面的两个大的步骤后,依然会出现QMYSQL driver not loaded问题呢,可能细心的同学们发现,控制台输出的信息中可以看到,qt支持的数据库列表中出现了mysql,但是依然不能使用。
根据前期的博客冲浪以及我的思考和总结,出现该问题的原因在于,你的QT编译的mingw73_64\bin
下缺少了一些与mysql相关的dll文件,所以才导致了mysql依然不能被加载的问题。
如下图所示,这里是可以正常运行的mingw73_64\bin
文件夹,仔细的看一看,你的文件夹内,跟我的有什么不同⭐️⭐️⭐️。
重点看下图中划红线的几个文件。
好的,当你看到少了一些文件后,去文件夹C:\Program Files\MySQL\MySQL Server 8.0\bin
中,如下图中我的bin文件里中(下图是Mysql文件夹,我后来更改过,如果你安装的是mysql8.X的话,应该就是MySQL Server 8.0文件夹),将缺少的文件复制到D:\Qt\Qt5.12.12\5.12.12\mingw73_64\bin
文件中,这时候你再运行下程序。
大功告成💐恭喜你跨过了QT的一个大坑,祝你QT学习的旅程愉快。