Qt安装MySQL驱动(Qt5.14.2与MySQL8.0安装版)
在Qt安装完成之后,若直接在Qt中连接MySQL数据库,往往会出现以下错误
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
这是因为Qt还未安装MySQL的驱动,以下以Qt5.14.2和MySQL8.0为例,详细介绍如何解决上述问题。
大致流程
第一步
首先需要确保你的Qt在安装的时候勾选了source(即源码),在Qt的安装目录下找到源码文件夹,找到MySQL的插件文件夹,以博主电脑为例:
C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
找到mysql.pro这一个Qt项目文件,双击打开。
更改为和博主一致的代码,
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
win32:LIBS += -L $$quote(C:/Program Files/MySQL/MySQL Server 8.0/lib) -llibmysql
INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.0/include)
DEPENDPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.0/include)
include(../qsqldriverbase.pri)
具体更改为:
将第6行注释掉
添加
win32:LIBS += -L $$quote(C:/Program Files/MySQL/MySQL Server 8.0/lib) -llibmysql
INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.0/include)
DEPENDPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.0/include)
编译之后,会出现这个界面,表明你已经成功了,关闭窗口。
注:加$$quote是因为博主MySQL的安装路径中有空格,如果没有空格可以不加;第一个地址是你MySQL安装的位置中lib的位置,第二、三个是你MySQL中lib文件夹的上一级;
注:如果不是安装版而是下载的zip文件,可能不是MySQL/MySQL Server 而是mysql+版本号(例如mysql-8.0.19-winx64)
第二步
编译此项目,当项目编译完成之后,在Qt文件夹的同级目录下寻找plugins文件夹打开sqldrivers文件夹,博主这里是:C:\plugins\sqldrivers;
将其中的qsqlmysql.dll和qsqlmysql.dll.debug文件复制到Qt的编译器的插件目录中,博主处为:C:\Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers
注:在上一级目录中可能有多个编译器,选择你常用的编译器即可
第三步
将MySQL的动态库复制到Qt的bin目录下:
首先,我们在Mysql中找到lib文件夹:
博主这里是C:\Program Files\MySQL\MySQL Server 8.0\lib
找到libmysql.dll
将其复制到Qt的bin目录中:博主这里C:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin
注意编译器不要选错;
到这里配置就完成了,可以进行MySQL连接的测试。
第四步
调试MySQL是否能在Qt中连接:
相关的代码可以查看相关文档:Qt连接云服务器MySQL
只需要把连接的MySQL库改为本地的即可。