QSqlDatabase QMYSQL driver not loaded 原因以及解决办法(总结)

本文详细介绍了在Qt环境下连接MySQL数据库时遇到驱动问题的三种解决方案:通过编译qt源码添加MySQL驱动,使用mysql-connector-c构建,以及检查、删除和重构项目。重点讲解了编译过程和配置步骤,并给出了注意事项,如确保文件位数一致和检查驱动是否存在。
摘要由CSDN通过智能技术生成
在花了整整两天的时间解决这个问题以后,我整理了一下目前网上主要的方法,同时附上我自己的解决方法和有关这个问题的想法。

网上很多的办法,基本上是同一个套路:

方法一:(编译mysql.pro)

1、打开qt源码(在安装qt的时候勾选source才会有,如果已经安装了不行卸载重装的话可以直接去官网下载源码http://download.qt.io/archive/qt/5.12/5.12.0/submodules/ 我的是5.12.0版本,改成自己的版本号即可),下载解压到qt文件夹内D:\Qt\Qt5\5.12.0\Src\qt-everywhere-src-5.12.0\qtbase\src\plugins\sqldrivers\mysql ,使用Qt Creator打开其中的mysql.pro文件,按照下面代码进行修改即可。

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 +="D:\MySQL\mysql-5.7.34-win32\include"
#这是MySQl的库文件路径
LIBS +="D:\MySQL\mysql-5.7.34-win32\lib\libmysql.lib"
#为了方便查找,不妨增加一条语句,该语句用来指明编译后的结果输出的位置
DESTDIR = ../mysql/lib/

注意:QMAKE_USE += mysql需要注释掉,不然会报错

​ 路径需要修改成自己的mysql安装的文件路径

修改完成后进行构建,就可以在D:\Qt\Qt5\5.12.0\Src\qt-everywhere-src-5.12.0\qtbase\src\plugins\sqldrivers\mysql\lib下找到编译生成的文件qmysql.dll和qmysqld.dll。

2、将生成的qmysql.dll和qmysqld.dll拷贝到D:\Qt\Qt5\5.12.0\msvc2017\plugins\sqldrivers内(我的是msvc,MinGw同理)就是编译器的文件夹,拷贝D:\MySQL\mysql-5.7.34-win32\lib(mysql安装文件夹下的lib文件夹)中的libmysql.lib和libmysql.dll到D:\Qt\Qt5\5.12.0\msvc2017\bin下,重新启动项目,查看是否成功。

这种方法总而言之就是,需要将msvc或者mingw中需要的qmysql.dll和qmysqld.dll同mysql中的libmysql.lib同版本,编译的目的就是这个

方法二:(构建mysql-connector-c)

1、下载mysql-connector-c的zip压缩包,网址:https://downloads.mysql.com/archives/c-c/,直接解压,将lib目录下的libmysql.dll拷贝到D:\Qt\Qt5\5.12.0\msvc2017\bin下

2、将libmysql.dll拷贝到release文件夹.exe文件同级目录下

这种方法可以考虑试试,毕竟网上最主流的还是方法一,当初看到不一样的时候也以为是能够解决的方法。

方法三:(检查、删除、重构)

这个方法是我亲测可以成功的,不过还是建议在上面两种方法都试过没有用的时候进行尝试。(仅供参考)

1、检查:

仔细检查自己连接mysql的配置文件或者代码中相应的登录名称、密码、ip等等是否正确,mysql服务是否开启,确保不是因为自己的马虎造成问题。

2、删除:

我是将项目生成的release文件(debug文件同理),先拷贝了一份保存(保险起见还是留存一份),然后将原来的release文件夹中的所有内容都删除了。

3、重构:

将项目重新生成,运行即可解决问题。

这种方法成功的解决了我的问题,回顾整个过程,可能的原因是release产生的文件夹中在之前添加了一些可能造成冲突或者歧义的文件,也可能是在尝试了网上得到一些方法过后在该文件夹中留存了一些文件,使得后续的操作无效。

注意

1、在尝试这种方法时可以先将文件夹拷贝留存一份,这样后续就算出现其他问题也可以有保障。

2、最关键的是:保证需要的程序位数一致32位或64位!!!!!!!!!

3、调用qDebug()<<QSqlDatabase::drivers();查看存在的驱动是否有QMYSQL QMYSQL3

如果输出中没有这两个,先进行方法一的操作;

4、如果输出是:

QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

那么尝试后两种方法;

  • 21
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
QMYSQL driver not loaded表示QMYSQL驱动程序未加载。在这种情况下,输出中列出了可用的驱动程序,其中包括QMYSQL和QMYSQL3。 要解决这个问题,可以按照以下步骤进行操作: 1. 确保已安装Qt的源代码。如果没有安装,可以从官网下载并解压缩源代码文件。 2. 打开Qt源代码文件夹中的mysql.pro文件。该文件位于"qtbase\src\plugins\sqldrivers\mysql"目录下。 3. 对mysql.pro文件进行修改,包括设置目标、头文件、源文件、依赖关系等。具体的修改内容可以参考提供的代码片段。 4. 在修改mysql.pro文件时,还需要指定MySQL的头文件和库文件的路径。确保INCLUDEPATH和LIBS变量中的路径正确指向你的MySQL安装目录。 5. 编译并构建项目,确保没有出现任何错误。 6. 检查生成的输出位置是否正确。 通过按照以上步骤进行设置和编译,应该能够解决QMYSQL driver not loaded的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [QSqlDatabase QMYSQL driver not loaded 原因以及解决办法总结)](https://blog.csdn.net/Lvcxiao/article/details/118631612)[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_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值