Qt5.13.0连接mysql8.0.22

6 篇文章 0 订阅

与Qt5.9.2不同的是,Qt5.9.2安装目录下:D:\Qt\Qt5.9.2\5.9.2\mingw53_32\plugins\sqldrivers下安装后已经有了qsqlmysql.dll、qsqlmysqld.dll两个文件,所以按照本人上一篇文章所说找到合适的libmysql.lib复制过来就可以搞定。而Qt5.13.0对应目录下无此文件,所以需要编译源码。需要注意的一点是,Qt5.9.2只有32位编译器,而Qt5.13.0装好后有32位和64位两个编译器。本人按照网上教程编译源码生成mysql的qsqlmysql.dll、qsqlmysqld.dll两个文件,开始没搞定,后来经大神提醒发现默认选的32位编译器,改用64位编译后问题解决。

这是编译器选择64位:

 配置.pro,添加下面mysql8.0.22下面的include和libmysql.lib,并指定生成目录。

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放置的路径

最后,只需将这两个生成的dll,复制到qt文件夹下:D:\Qt\Qt5.9.2\5.9.2\mingw53_32\plugins\sqldrivers

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

补充:

以上是在windows10系统上做的。后期在另一台win7电脑,还有另一台win11电脑上安装Qt5.13.0连接mysql8.0.22时发现即使按上面的步骤来做,仍然会报一个错误:

QSqlDatabase: QMYSQL driver not loaded

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

这下麻烦了,从网上各种搜索找不到有效解决办法。后来经朋友说是不是还缺少什么库,下载了一个dependency walker软件,分析一下编译生成的》.exe依赖哪些dll,工具查找发现libmysql.lib需要依赖libcrypto-1_1-x64.dll、libssl-1_1-x64.dll等dll,发现mysql的安装目录下:MySQL Server 8.0\bin有这两个dll,拷贝到C:\Windows\system32目录下后,程序能正常启动。(试验发现拷贝到系统目录C:\Windows\SysWOW64不管用,试验发现拷贝到程序根目录也不管用)这个可以找找system32目录SysWOW64目录的区别)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值