恶心人的QT512版本连接MYSQL80

转载,我自己用的是MYSQL8.0.21+QT MinGw64位 亲测成功

在使用Qt操作MySQL数据库过程中,使用Qt编写好连接MySQL数据库的的代码后,编译调试时报错QSqlDatabase: QMYSQL driver not loaded,意味着Qt应用程序与MySQL数据库连接失败。报错如下图所示:

("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
"Driver not loaded Driver not loaded"

    
    
  • 1
  • 2
  • 3
  • 4

本工程项目(解决方案)开发环境为:

(1)操作系统:Windows10

(2)MySQL版本为:8.0 MySql下载

(3)Qt版本为:5.14.1 Qt5.14.1下载

(4)QtCreator版本 为:4.11.0

分析”QSqlDatabase: QMYSQL driver not loaded”出现的原因

根据上图的报错提示,查阅官方文档,链接:https://doc.qt.io/qt-5/sql-driver.html#qmysql-for-mysql-4-and-higher,得到相关信息,如下

(1)Qt SQL模块使用驱动程序插件与不同的数据库api进行通信。

(2)支持的数据库如下:

Driver nameDBMS
QDB2IBM DB2 (version 7.1 and above)
QIBASEBorland InterBase
QMYSQLMySQL (version 5.0 and above)
QOCIOracle Call Interface Driver
QODBCOpen Database Connectivity (ODBC) - Microsoft SQL Server and other ODBC-compliant databases
QPSQLPostgreSQL (versions 7.3 and above)
QSQLITE2SQLite version 2Note: obsolete since Qt 5.14
QSQLITESQLite version 3
QTDSSybase Adaptive ServerNote: obsolete since Qt 4.7

根据报错信息提示可用的drivers是: QSQLITE QODBC QODBC3 QPSQL QPSQL7,其中没有QMYSQL驱动。于是定位问题出现的原因是:缺少QMYSQL驱动。

编译MySQL驱动

(一)编译驱动

查阅计算机Qt安装路径:E:\ProgramData\Qt\Qt5.14.1\5.14.1\mingw73_64\plugins\sqldrivers 的sqldrivers插件,如下
在这里插入图片描述
 发现其中没有与MySQL相关的驱动插件。

原来Qt5.14版本下不包含有驱动MySQL的驱动插件,那么就需要自己编译插件了。编译插件的过程如下:

1、使用QtCreator打开mysql.pro项目E:\ProgramData\Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql

打开项目文件(初始内容)如下
在这里插入图片描述
对照的修改为以下内容
在这里插入图片描述
给出代码,自行复制替换

style="position: unset;">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)
#该路径是的Mysql的头文件(include)路径
INCLUDEPATH +="E:\Program Files\MySQL\mysql-8.0.18-winx64\include"
#这是MySQl的库文件路径
LIBS +="E:\Program Files\MySQL\mysql-8.0.18-winx64\lib\libmysql.lib"
#为了方便查找,不妨增加一条语句,该语句用来指明编译后的结果输出的位置
DESTDIR = ../mysql/lib/

添加完之后编译程序(注意:此处使用的是MinGw64位)
在这里插入图片描述
编译成功后E:\ProgramData\Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql目录下会多出一个lib目录

在这里插入图片描述

2、将这三个文件复制到E:\ProgramData\Qt\Qt5.14.1\5.14.1\mingw73_64\plugins\sqldrivers

在这里插入图片描述

(二)添加MySql扩展包

添加MySQL连接的扩展包libmysql.dlllibmysql.lib,这个包在我们的MySql安装目录E:\Program Files\MySQL\mysql-8.0.18-winx64\lib中;
将扩展包添加到Qt安装目录E:\ProgramData\Qt\Qt5.14.1\5.14.1\mingw73_64\bin中:
在这里插入图片描述
至此,Qt可以连接到MySQL数据库了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值