Qt5.14.2连接MySQL8.0(windows安装版)

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)
编译之后,会出现这个界面,表明你已经成功了,关闭窗口。
Qt5.14.2连接MySQL8.0(windows安装版)_第1张图片

注:加$$quote是因为博主MySQL的安装路径中有空格,如果没有空格可以不加;第一个地址是你MySQL安装的位置中lib的位置,第二、三个是你MySQL中lib文件夹的上一级;

注:如果不是安装版而是下载的zip文件,可能不是MySQL/MySQL Server 而是mysql+版本号(例如mysql-8.0.19-winx64)

第二步

编译此项目,当项目编译完成之后,在Qt文件夹的同级目录下寻找plugins文件夹打开sqldrivers文件夹,博主这里是:C:\plugins\sqldrivers;
Qt5.14.2连接MySQL8.0(windows安装版)_第2张图片

将其中的qsqlmysql.dll和qsqlmysql.dll.debug文件复制到Qt的编译器的插件目录中,博主处为:C:\Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers
Qt5.14.2连接MySQL8.0(windows安装版)_第3张图片
Qt5.14.2连接MySQL8.0(windows安装版)_第4张图片

注:在上一级目录中可能有多个编译器,选择你常用的编译器即可

第三步

将MySQL的动态库复制到Qt的bin目录下:
首先,我们在Mysql中找到lib文件夹:
博主这里是C:\Program Files\MySQL\MySQL Server 8.0\lib
找到libmysql.dll
Qt5.14.2连接MySQL8.0(windows安装版)_第5张图片
将其复制到Qt的bin目录中:博主这里C:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin
注意编译器不要选错;
到这里配置就完成了,可以进行MySQL连接的测试。

第四步

调试MySQL是否能在Qt中连接:
相关的代码可以查看相关文档:Qt连接云服务器MySQL
只需要把连接的MySQL库改为本地的即可。

你可能感兴趣的:(QT,mysql,qt)