解决32位的Qt5.2及以上版本无法连接64位mysql问题(本人实际用32位Qt5.9.2连接64位mysql8.0.22)

11 篇文章 4 订阅
6 篇文章 0 订阅

在使用Qt连接mysql数据库的时候,遇到过这样的报错,做一下记录和总结。

  报错如下:

       (1)QSqlDatabase: QMYSQL driver not loaded
  (2)QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7


————————————————

 

Qt5.9.2如果使用的是mingw编译器,Qt只有32位的。连接64位的MySQL,即使把mysql安装目录下的libmysql.dll放到qt安装目录bin路径下,也是无法连接数据库。网上给出的做法是下载Qt对应版本的源码,重新编译。这种方法复杂繁琐,且容易编译失败。先发现一种简便方法,就是mysql的官网给出了连接32位的驱动。

https://downloads.mysql.com/archives/c-c/icon-default.png?t=L892https://downloads.mysql.com/archives/c-c/

 从上面的地址下载下来mysql-connector-c-6.1.11-win32.zip(不要找c++比如mysql-connector-c++-8.0.22-win32.zip这样的,里面没有需要的libmysql.dll),不需要安装,直接找到里面的libmysql.dll,该文件复制到Qt安装目录 $gwinstallpath\mingw48_32\bin下即可连接成功!

 

 注:前提是安装Qt时,目录下已经自动安装了qsqlmysqld.dll,qsqlmysql.dll等dll,如下图:

网上说编译源码,我这种情况按照下面的流程行不通,编译会报错,可能方法是针对Qt和mysql同为64位的原因,可能还得下载32位的mysql的lib和include相关文件与32位的Qt匹配了才行,太麻烦就不想搞了。方法就是下面的:

原文链接:https://blog.csdn.net/qq_38344751/article/details/105387341 

1、Qt目录里缺失了和Mysql的连接插件qsqlmysql.dll。在这种情况下,单纯地将Mysql目录下的lib文件夹下的libmysql.dll复制到Qt的目录下的bin目录下是无用的。

2. 在没有连接插件qmysql.dll的情况下进入第二步,Qt官网上下载源码qt-everywhere-opensource-src-5.7.29.zip,qt-everywhere-opensource-src-5.7.29\qtbase\src\plugins\sqldrivers\mysql。

双击打开mysql.pro,进入Qt creator编译器界面,添加下面的三行代码:

INCLUDEPATH +=E:/DateBase/Mysql/mysql-5.7.29-winx64/include/    # 添加你自己的mysql安装目录下的include文件夹
LIBS += E:/DateBase/Mysql/mysql-5.7.29-winx64/lib/libmysql.lib # 添加你的mysql安装目录下的lib文件夹下的libmysql.lib文件
DESTDIR = ../mysql/mysqlDll    # 设置编译好的qmysql.dll放置的目录,不然你可能不知道会生成在哪。

 然后进行构建,就是界面左下角的锤子,这时会出现如下的两个错误:

Cannot read H:/qtsqldrivers-config.pri: No such file or directory
Project ERROR: Library 'mysql' is not defined.

  第一个问题中没有这样的文件,但是可以在目录E:\Qt\qt-everywhere-src-5.13.2\qtbase\src\plugins\sqldrivers下找到configure.pri这个文件,那么我们就把原来需要qtsqldrivers-config.pri的地方注释掉,改成configure.pri。
  打开qsqldriverbase.pri文件,将第四行注释掉,即#include($ $shadowed($ $PWD)/qtsqldrivers-config.pri),然后添加include(./configure.pri),保存,完成。

 

Library 'mysql' is not defined,这个问题好解决,在qt左侧栏中双击打开mysql.pro,将第六行注释掉,这样:#QMAKE_USE += mysql。这个办法需要格外感谢看过的一个大佬的教程,太秀了。

 

接下来重新构建,没有报错。再次找到之前指定的编译好的dll放置的路径,E:\Qt\qt-everywhere-src-5.13.2\qtbase\src\plu gins\sqldrivers\mysql\mysqlDll,果然生成了qsqlmysql.dll和qsqlmysqld.dll,这两个就是qt连接mysql数据库的桥梁了。

最后,只需将这两个生成的dll,复制到qt文件夹下:E:\Qt\Qt5.13.2\5.13.2\msvc2015_64\plugins\sqldrivers。

        并且也要将自己的mysql安装目录下的lib文件夹下的libmysql.dll,复制到qt的编译器的bin目录下,这样Qt就可以连接Mysql了。
 

 

  • 16
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值