qt6.5.2版本的mysql驱动编译以及有mysql驱动但是无法加载问题解决,写于2023.8.18日

注意,mysql驱动编译问题根据不同的版本很可能出现极其严重的问题导致本版本无法编译,请注意,还有sql路径请不要添加任何中文或者空格

Qt默认是不支持mysql驱动的,需要自己进行手动编译,我的是6.5.2,可以看到在这里

6.5.2\mingw_64\plugins\sqldrivers

这个文件夹下面是没有qsqlmysql.dll这个组件的

驱动编译问题首先需要源码也就是qt自带的源码,如果qt下没有这个Src文件夹

返回qt安装目录下,打开cmd窗口,将MaintenanceTool.exe拖入cmd窗口

如图

Powershell也可以,然后空一格,输入镜像网站

--mirror https://mirrors.tuna.tsinghua.edu.cn/qt 

mirror后面的部分不唯一,网上也能找到很多大学的镜像网站

然后回车,就可以打开qt页面了,点击下一步,选择添加或移除组件,然后下一步,勾选Archive

然后点击筛选,就可以显示更多版本了,找到自己的版本,然后勾选Sources

这里我已经安装过了,剩下的点击下一步安装就好了

安装好了之后,就可以有Src了,之后进入Src\qtbase\src\plugins\sqldrivers

打开.cmake.conf这个文件,选择使用记事本,可以看到本来应该是这样的

我们添加上这三行代码

SET(FEATURE_sql_mysql ON)

SET(MySQL_INCLUDE_DIR "x:/xxxx/include")

SET(MySQL_LIBRARY "x:/xxx/lib/libmysql.lib")

最后两行是你下载的mysql的安装路径,mysql的安装本处不再多说,例如我的安装在了E盘的Mysql下,就写成这样

SET(FEATURE_sql_mysql ON)

SET(MySQL_INCLUDE_DIR "E:/Mysql/include")

SET(MySQL_LIBRARY "E:/Mysql/lib/libmysql.lib")

然后打开qt,打开这个文件夹下的CMakeLists.txt

打开过后看左边,是不是这样的,如果整个名字都错了,不是QSQLiteDriverPlugins,而是sqldrivers之类的(据我所知qt6.2.3是sqldrivers这样的),那么建议更新版本到一个能够打开的版本,或者自行查阅资料进行解决

当然,也有可能名字是对的,但是出现了多一个文件夹例如psql(我一开始就是有psql),然后运行起来会有几百个报错,那么这个时候在.cmake.conf之前那个文件中,改成这样

SET(FEATURE_sql_mysql ON)

SET(FEATURE_sql_psql OFF)

SET(MySQL_INCLUDE_DIR "E:/Mysql/include")

SET(MySQL_LIBRARY "E:/Mysql/lib/libmysql.lib")

就可以关闭psql了,记得吧最后两行的替换成自己的mysql路径,之后选择realse进行编译,

 

当然有可能他会报一个错误,不需要理会

这个时候返回.cmake.conf的上级目录,可以看到生成的realse文件

进入然后点击plugins,点击sqldrivers,可以看到

这里我们复制粘贴qsqlmysql.dll和qsqlmysql.debug,把他放入开头提到的6.5.2\mingw_64\plugins\sqldrivers,这里6.5.2是我的qt版本,各位自行更改就好

然后打开你的mysql,进入lib文件夹,找到libmysql.dll

 把他放到你的qt的bin里面

这个时候就搞定了,mysql驱动就已经编译并且加载完毕了,如果有输出驱动的代码这个时候就能够输出驱动了,前提是你运行的版本要跟你刚刚修改的版本一样

但是这还没完,还有一个问题就是在连接mysql驱动的时候,依然会报错,显示mysql驱动没有加载,但是输出的可使用的驱动里面明明是有mysql的,这个问题是由于mysql版本高的时候会有一个保护机制,首先我们进入mysql的官网

选择Connector/C++

下载相应版本的zip,我的是8.1.0,也就是第二个,后面的Archives是历史版本,如果不知道怎么查看自己的mysql版本,请打开mysql输入密码后输入status查看

,下载完了之后进入

把里面除了文件夹的所有组件

复制粘贴到你的Debug或者Realse的生成文件下,这样就可以连接上数据库了

如果还报错之类的,可以删除已经构建的项目文件夹重新构建,我用的是minGW编译的,理论上来说MSVC也是一样的,这一点大家还请自行探索即可

好了就是这样,因为我下载的直接复制粘贴到了mysql文件夹下,所以lib64的路径会不一样,各位自行调整即可

这方面的问题本教程不可能完全提到,如果有不全的地方还请自行与其他教程或者帖子相结合,还请见谅

顺带一提,最后发布版本打包exe过后也需要把lib64的组件复制过去,本教程写于2023年8月18日,如果时间过去很久,那么教程就仅供参考了,还望海涵

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Qt 6.5.2 是一个跨平台的应用程序开发框架,用于开发图形界面应用程序。MySQL驱动Qt的一个重要组件,用于与MySQL数据库进行交互。然而,Qt 6.5.2 版本中没有提供内置的MySQL驱动。 要在Qt 6.5.2中使用MySQL数据库,我们需要手动安装MySQL驱动程序。首先,我们需要下载适用于Qt 6.5.2版本MySQL驱动程序。通常,可以通过MySQL官方网站或Qt官方网站找到适用于特定Qt版本MySQL驱动。 一旦我们下载了MySQL驱动程序,接下来需要将其复制到Qt的安装目录下。具体来说,我们需要将MySQL驱动程序的库文件(一般是以.lib或.so为扩展名的文件)复制到Qt安装目录下的plugins/sqldrivers文件夹中。 然后,在Qt项目的.pro文件中,我们需要添加数据库模块的声明和链接。具体来说,我们需要添加如下三行代码: ``` QT += sql LIBS += -lmysql INCLUDEPATH += <path_to_mysql_header_files> ``` 其中,`<path_to_mysql_header_files>`是MySQL头文件的路径。 完成上述步骤后,我们就可以在Qt项目中使用MySQL数据库了。可以使用Qt提供的SQL相关类和函数来连接到MySQL数据库,并执行各种数据库操作,如查询、插入、更新和删除等。 总之,Qt 6.5.2虽然没有内置的MySQL驱动,但我们可以手动安装MySQL驱动程序,并通过适当的配置和链接使其与Qt项目搭配使用。这样,我们就能在Qt 6.5.2中顺利地与MySQL数据库进行交互了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值