一、使用环境和工具
Qt版本:5.12
mysql版本:5.7.35
平台:windows7
二、所遇到的问题
1、QMYSQL driver not loaded
2、用windeployqt 打包后复制到其他电脑 driver not loaded
三、解决问题
1、根本原因:Qt的sql驱动库缺失mysql的驱动库,可以在该路径下查看 C:\Qt\Qt5.12.6\5.12.6\mingw73_64\plugins\sqldrivers
我们需要做的生成mysql的驱动库,步骤如下:
01、安装mysql数据库(自行安装)
02、找到/安装Qt源码
如果没有可以使用Qt安装文件,再次安装,只选“src”一个选项
03、找到mysql驱动库项目文件
Qt\Qt5.12.2\5.12.2\Src\qtbase\src\plugins\sqldrivers\mysql
04、打开项目文件,在项目文件中添加mysql动态库路径,并注释到QMAKE_USE+=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
LIBS += -LD:/mysql-5.7.23-winx64/lib/ -llibmysql
INCLUDEPATH += D:/mysql-5.7.23-winx64/include
DEPENDPATH += D:/mysql-5.7.23-winx64/include
include(../qsqldriverbase.pri)
05、编译生成qsqlmysql.dll和qsqlmysqld.dll库文件
文件会生成到该目录下(不按常理出牌)
Qt\Qt5.12.2\5.12.2\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers
06、复制该文件到Qt的sqldrivers目录下
C:\Qt\Qt5.12.6\5.12.6\mingw73_64\plugins\sqldrivers
。。。。。到此mysql的驱动库就安装完成。
2、这个只需将mysql安装目录下的libmysql.dll到打包目录下,与exe文件同级即可
四、总结
解决第一个问题时,发现好多文章是将libmysql.dll复制到Qt安装目录的bin文件夹下,回头想这可能是一个误导,或者版本跨度比较大。