QMYSQL driver not loaded 的原理和解决办法

转:http://blog.csdn.net/m15814478834/article/details/49902077

最近使用Qt遇到了"QMYSQL driver not loaded"的问题.网上回答五花八门.大部分都没法根本解决问题.解决问题的没有原理,过程还繁琐极容易犯错.希望看到我这片文章的人不要在花两周时间折腾各个版本的MySQL,各个版本的Qt了.

没时间的直接看最后总结.

Qt连接到mysql的过程

Qt->Qt的数据库插件->mysql动态库->mysql

Qt的数据库插件是\plugins\sqldrivers下的qsqlmysqld.dll qsqlmysql.dll

mysql动态库是在mysql的安装目录下的libmysql.dll

以上dll存在才能顺利连接数据库.所以这篇文章所代表的拷贝libmysql.dll文件的答案占了一大半.实际上解决问题纯属幸运.当然因为需要dll,这篇文章所代表的配置环境变量又误导了一堆人,这种配置环境变量的方法更是看脸.什么mysql空格什么的更是无稽之谈.至少qt5.1开始.没有路径空格和中文的限制了.

那么为什么很多人使用Qt5以上的版本,其中包含qsqlmysqld.dll qsqlmysql.dll文件,也把libmysql.dll拷贝到Qt的bin或者程序输出目录了也还是driver not loaded呢?

因为不同版本的mysql里面包含不同的libmysql.dll, 不同的libmysql.dll必须和配套的qsqlmysqld.dll qsqlmysql.dll一起才能正常工作.

知道为什么了,如何解决呢?找到libmysql.dll去重新编译对应版本的qsqlmysqld.dll qsqlmysql.dll.别担心,和我一样不愿意敲命令行的人.我介绍一种使用Qt creater编译的方法.

1:打开Qt安装路径下的源码.例如C:\Qt\Qt5.2.0\5.2.0\Src\qtbase\src\plugins\sqldrivers\mysql.(如果没有src路径,重新安装Qt,选择完全安装就有了)双击mysql.pro

2:如果是连接远程数据库,本机可以不装mysql,但是必须找到一个mysql的安装目录复制到本地.这里面包含includ目录和lib目录.

3:编译一下mysql.pro,提示少头文件,mysql.pro中添加2中的include目录,再编译,缺少lib文件.添加lib文件.下图示例

4:把编译好的qsqlmysqld.dll qsqlmysql.dll拷贝到\plugins\sqldrivers下

5:mysql文件夹下lib路径下的libmysql.dll复制到到目录mingw47_32\bin

总结:不同版本的mysql里面包含不同的libmysql.dll, 不同的libmysql.dll必须和配套的qsqlmysqld.dll qsqlmysql.dll一起才能正常工作.可以下载别人编译好的.

qsqlmysqld.dll qsqlmysql.dll拷贝到\plugins\sqldrivers,libmysql.dll复制到到目录mingw47_32\bin.必须配套使用,配套使用,配套使用.

时间: 2024-10-22 15:29:14

QMYSQL driver not loaded 的原理和解决办法的相关文章

QSqlDatabase: QMYSQL driver not loaded 解决方法(debug下正常,release下报错)

环境: QT 5.11 Mysql 5.5 MSVC 2015 编译器 以上全为64位 症状为: Debug下连接数据库正常,Release下连接数据库失败 提示如下: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 注意,这种情况下根本就不需要手动编译Mysql driver,因为Qt已经自带了 按网上

mac qt QMYSQL driver not loaded

Mac下qt连接mysql一直QMYSQL driver not loaded错,网上辗转试了很多办法,终于解决了. 链接是:http://qtdebug.com/DB-AccessMySQL.html 然后我的电脑还是不行,原来是根目录下没有/opt文件夹,于是在root下手动建立了文件夹并把相应的.dylib文件拷贝过来即可:/opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib.

QSqlDatabase: QMYSQL driver not loaded 解决方案

在Qt 5中使用数据库连接时,弹出下面的错误: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 从上面的错误可以看出,错误发生在MySQL数据库驱动并未加载. 对于这种错误一般有两种情况: 第一种:无MySQL驱动,那么检查 Qt\5.3\msvc2013_64_opengl\plugins 目录下是否有

qt连接mysql报错:QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

之前使用Qt连接mysql数据库,遇到过这样的报错,后来解决了,但没有记录下来,这次又遇到了,花了好多的精力,这次吸取上次的教训,做一下记录和总结. 报错截图: 编辑背景: Qt5.13.0,编译器是mingw73_64,是64位的. mysql-5.7.27-winx64,也是64位的. 有人说,qt的编译器的位数要和数据库的位数是一致的,我没试过不同位数行不行,反正我的都是64位的. 问题: 使用<QSqlDatabase>库进行mysql的连接操作,出现下面的报错信息,当然别忘了在.pr

QMYSQL driver not loaded

首先看看错误吧: 从上面的提示可以查看: Qt5.4.1内置了MySQL驱动以及支持,那么不需要像以前的Qt版本一样,自己编译MySQL驱动,这个方法可以X掉了: 但是连接MySQL的时候还是报错了:QMYSQL driver not loaded...什么鬼? 首先需要知道一点,看图说话: 也就是说需要自己格外添加一个libmysql.dll咯, 去MySQL的安装目录下,找到libmysql.dll,拷贝到Qt编译生成的.exe的同级目录下即可,如图: 这里需要注意一点(位数问题): 我这里

struts2漏洞原理及解决办法

1.原理 Struts2的中心是运用的webwork结构,处置 action时号码大全经过调用底层的getter/setter办法来处置http的参数,它将每个http参数声明为一个ONGL(这里是ONGL的介绍)语句.当关键词挖掘工具咱们提交一个http参数: ?user.address.city=Bishkek&user['favoriteDrink']=kumys ONGL将它转换为: action.getUser().getAddress().setCity("Bishkek&q

老男孩教育每日一题-2017年4月12日-请问如下登录环境故障的原理及解决办法?

请问如下登录环境故障的原理及解决办法? -bash-4.1$  -bash-4.1$

【转】Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)

概要 前面,我们已经学习了ArrayList.接下来,我们以ArrayList为例,对Iterator的fail-fast机制进行了解.内容包括::1 fail-fast简介2 fail-fast示例3 fail-fast解决办法4 fail-fast原理5 解决fail-fast的原理 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308762.html 1 fail-fast简介 fail-fast 机制是java集合(Collection)中

##解决 ViewPager 调用 notifyDataSetChanged()无刷新:原理、解决办法##

一.原理 转自:http://www.cnblogs.com/maoyu417/p/3740209.html 转载 http://www.67tgb.com/?p=624 最近项目结束,搞了一次代码分享.其中一位同学分享了一下自己在解决问题过程中的一些心得体会,感觉受益匪浅.整理出来,分享给大家. 建议使用自己编译的android os和虚拟机,这样就可以调试android系统中的任何组件.简单说来,深入android源码,去寻找解决问题的答案.这事儿说起来简单,实际做起来还是有些难度的.我也曾