解决QMYSQL driver not loaded问题

时间:2024-03-11 07:21:35

前言

之前都是在Qt5.51上开发,连接mysql数据库一直没有问题,换到5.15.2后一直报错

一查才发现\5.15.2\msvc2019_64\plugins\sqldrivers目录下没有qsqlmysql了,5.5.1是有的,5.15.2是要自己编译的。。。

下载源码

安装qt的时候没有选择下载源码,用在线安装器下载源码预计3小时。。。呵呵。。。果断选择在国内镜像网站下载,5.15.2Index of /qtproject/archive/qt/5.15/5.15.12/single/ (ustc.edu.cn)。两分钟搞定。

编译

把源码解压到qt安装路径下,打开\qtbase\src\plugins\sqldrivers\mysql,用Qtcreator打开mysql.pro。安装需要依赖mysql的库,我的电脑安装了mysql直接把mysql安装目录下的\MySQL\MySQL Server 8.0\include

\MySQL\MySQL Server 8.0\lib

复制到

\qtbase\src\plugins\sqldrivers\mysql

像这样

然后修改mysql.pro文件如下

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#屏蔽这个
#QMAKE_USE += mysql

#以下路径根据自己的mysql安装路径添加
LIBS += -L$$PWD/lib -llibmysql
INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

移动文件

编译成功后就会在Qt安装所在盘符的plugins目录下生成qsqlmysql的release和debug版本,比如笔者的qt5.15.2安装在D盘,则会生成到D:\plugins\sqldrivers下,如下:

然后把这两个dll复制到\5.15.2\msvc2019_64\plugins\sqldrivers目录下,我还以为这样就行了,然后运行依然报错,但与之前不同:

这时还需要把\MySQL\MySQL Server 8.0\lib目录下的libmysql.dll和libmysql.lib复制到\5.15.2\msvc2019_64\bin目录下。

重新编译之后不报错了,打完收工。