解决Qt与MySQL连接过程中出现“QSqlDatabase: QMYSQL driver not loaded”问题

一、序言

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

在这里插入图片描述

本文内容包括:

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

(2)解决“QSqlDatabase: QMYSQL driver not loaded”的方法总结


本工程项目开发环境为:

(1)操作系统:Windows

(2)MySQL版本为:8.0

(3)Qt版本为:5.13

(4)QtCreator版本 为:4.9.1


二、分析”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)支持的数据库如下:

在这里插入图片描述
根据报错信息提示可用的drivers是: QSQLITE QODBC QODBC3 QPSQL QPSQL7,其中没有QMYSQL驱动。于是乎定位问题出现的原因是:缺少QMYSQL驱动。

在这里插入图片描述
 发现其中没有与MySQL相关的驱动插件。

三、解决“QSqlDatabase: QMYSQL driver not loaded”的方法总结

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

在编译插件之前需准备两个源码包:
   (1)需要一个与MySQL连接的扩展包:mysql-connector-c-6.1.3-win32,资源下载链接为:https://dev.mysql.com/downloads/file/?id=450611
   (2)Qt的源码,在安装Qt的时候,可以选择安装资源来确保同时将Qt的源码也安装到自己的电脑上。
  两个源码包的资源文件如下图所示:

在这里插入图片描述
在这里插入图片描述
接下来,开始编译源码,如何编译Qt源码这里不细说了。

(1)使用windows命令行切换到该MySQL驱动工程路径下,使用qmake生成相应的makefile文件。

在这里插入图片描述
(2)使用mingw32-make编译该工程。
在这里插入图片描述
提示在qsql_mysql_p.h头文件中找不到mysql.h的头文件。说明mysql.头文件没有引入到该工程中。于是在该工程的.pro文件中添加包含路径和库文件路径,添加后文件如下:

在这里插入图片描述
(此处添加了用于MySQL连接的扩展包:mysql-connector-c-6.1.3-win32的头文件和资源路径)

添加完成后,重新使用qmake工具生成makefile文件,然后使用mingw32-make编译该工程文件,编译完成后,可以使用mingw32-make install完成插件的安装,也可以不用,手动复制插件到指定路径即可。编译完成后,将生成如下MySQL的驱动组件:

在这里插入图片描述
(路径为D:\ProgramFiles\Qt\5.13.0\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers)

(3)将其中的qsqlmysql.dll文件和qsqlmysqld.dll文件复制到 D:\ProgramFiles\Qt\5.13.0\mingw73_32\plugins\sqldrivers,注意这里是D:\ProgramFiles\Qt\5.13.0\mingw73_32文件夹中

在这里插入图片描述
 (4)进行测试,在QtCreator中编译运行自己写好的MySQL连接程序,又出现报错,如下图:
 在这里插入图片描述
此时分析报错,QMYSQL驱动已经存在,然而依然不能连接到MySQL数据库。于是将MySQL连接的扩展包:mysql-connector-c-6.1.3-win32中的lib文件夹下的libmysql.dll和libmysql.lib(该ibmysql.lib文件可以不要)文件复制到Qt构建套件路径D:\ProgramFiles\Qt\5.13.0\mingw73_32\bin下,如下图:
在这里插入图片描述
重新测试,于是乎可以连接到MySQL数据库了。

四、总结

总而言之,使用了Qt sql模块来操作MySQL数据库,需要三个库文件来支持,分别为:libmysql.dll、qsqlmysql.dll文件和qsqlmysqld.dll文件,三个文件缺一不可。若在Qt安装路径的插件文件夹路径下(D:\ProgramFiles\Qt\5.13.0\mingw73_32\plugins\sqldrivers )找不到对应的驱动扩展,那么就需要编译相应的驱动扩展文件到相应路径。同时要将用于与MySQL连接的扩展包:mysql-connector-c-6.1.3-win32文件下的libmysql.dll库文件复制到Qt构建套件路径D:\ProgramFiles\Qt\5.13.0\mingw73_32\bin文件夹中,确保能与MySQL连接成功。

(注:在使用Qt编写数据库连接层代码时,可以使用QSqlDatabase::drivers()方法来查看Qt当前开发环境下有哪些可用的数据库驱动程序)

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Ubuntu环境下,当出现"QSqlDatabase: QMYSQL driver not loaded"的错误时,这意味着Qt尝试连接MySQL数据库时发现缺少MySQL的驱动程序。这个错误通常是由于缺少QtMySQL数据库的驱动程序所致。为了解决这个问题,你可以按照以下步骤进行操作: 1. 确保在Ubuntu系统已经安装了MySQL数据库Qt的相关组件。 2. 检查Qt的安装目录下是否存在MySQL驱动程序的插件文件。通常这个文件应该是libqsqlmysql.so或者libqsqlmysql.dylib,取决于你的系统。 3. 如果在Qt的安装目录下找不到MySQL驱动程序的插件文件,你可以尝试手动安装它。首先,找到你的MySQL安装目录的lib文件夹,然后复制libmysqlclient.so文件到Qt的插件目录,通常是Qt的安装目录下的plugins/sqldrivers/文件夹。 4. 确保将MySQL驱动程序的插件文件路径添加到你的项目文件(.pro文件)QTPLUGIN变量,例如:QTPLUGIN += sqldrivers/qmysql。 通过上述步骤,你应该能够解决"QSqlDatabase: QMYSQL driver not loaded"的错误,并成功连接MySQL数据库。希望对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Qt5.4下连接Mysql,QSqlDatabase: QMYSQL driver not loaded but available-附件资源](https://download.csdn.net/download/weixin_42193786/15516249)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [ubuntu下 QT 连接各种数据库报错解决(QSqlDatabase: * driver not loaded )](https://blog.csdn.net/ljasdf123/article/details/8663223)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [ubuntu下qt连接mysql数据库报错的问题:QSqlDatabase: QMYSQL driver not loaded](https://blog.csdn.net/zhangzhong19870720/article/details/128563197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iriczhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值