文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

解决Qt6连接MySQL的驱动问题

2023-08-19 15:22

关注

在使用Qt6连接MySQL数据库时,在编译过程中出现了这样的问题:QSqlDatabase: QMYSQL driver not loaded. 具体错误如图1.1所示。

图1.1 错误信息

这说明MySQL的驱动没有被加载,错误提示信息的第二行可以看出当前可用的驱动仅包括QSQLITE、QODBC、QPSQL等,这说明此时是无法连接MySQL的。

这里查阅相关资料,可以了解到Qt连接到MySQL的过程:app->Qt的数据库插件->MySQL动态库->MySQL服务1

因此,要连接到MySQL服务就必须建立相应的Qt数据库驱动插件和MySQL动态库文件,这也是本文要解决的重点问题。

这里以MSVC2019_64编译环境为例,而我们目前缺少的是:

为了得到连接MySQL所需要的驱动文件,也就是dll文件,我们需要通过手动编译来实现生成这些驱动文件(qsqlmysql.dll之类的文件);而在编译过程中我们需要准备一些MySQL数据库必要的相关文件。

重要!!!当然如果你要连接的Mysql数据库是64位,而且你的Qt项目也是建立在Desktop MSVC2019 64bit编译环境下,那你可以直接访问https://github.com/sokestudio/qt6_mysql_driver 下载对应项目,进入dll_and_lib文件夹里面我帮大家编译好了,你可以直接使用,而无需再进行相应的编译工作,直接进入第3小节,进行复制相关文件即可
当然如果你想进一步尝试也可以,你尽可以一步一步操作,享受这一过程~

3.1 获取编译所需材料

在正式编译之前我们需要准备:

3.1.1准备生成Mysql驱动文件的工程

目前Qt6一般不提供mysql驱动,而且也没有pro文件来生成对应的驱动文件

因此,这里我整合了一个生成驱动文件的Qt工程,你可以按照下面的链接去访问该项目
https://github.com/sokestudio/qt6_mysql_driver

Alt

图1.2 qt6_mysql_driver项目

你可以选择任何方式去下载,但这里仍给出参考 ^_*

  1. 直接访问该链接
https://codeload.github.com/sokestudio/qt6_mysql_driver/zip/refs/heads/master
  1. 使用Git Bash去下载
git clone git@github.com:sokestudio/qt6_mysql_driver.git

3.1.2 准备Mysql相关的头、库文件

重要!!当然这里也一样,如果你要连接的Mysql数据库是64位,在我的项目工程中已经把所需的材料放进去了,已经置于项目文件夹下的mysql-connector-c-win64 文件夹中,可跳过本节,而直接进入第2小节编译环节,欢迎使用~

对于Mysql相关的动静链接态、头库文件(包括libmysql.lib、libmysql.dll等)文件,如果你安装的MySQL版本较新(8.0以后),或者你没有安装MySQL,你可能在本地找不到相关的文件,没关系我们可以通过下面的链接下载对应版本的文件:

https://downloads.mysql.com/archives/c-c/

图1.3 MySql Connector/C
这里以选择Windows(x86,64-bit)进行下载,而具体下载多少位版本取决于MySql数据库的版本位数,完成之后并解压得到如图1.4所示的文件目录,这里的include和lib文件夹就是我们编译所需的东西;

图1.4 Mysql Connector文件目录

图1.4 Mysql Connector文件目录

当然如果你本地安装了低版本MySQL,你可以在其安装目录找到这些文件夹,没找到的话就按上面的下载相应的就可以啦!

3.2 开始进行编译

首先,进入工程目录qt6_mysql_driver,如果你需要编译其他版本下的mysql驱动文件,你仅需要把图1.4所示文件目录下的include和lib文件夹里的东西,对应放到本项目工程的mysql-connector-c-win64文件夹里面替换即可,如图1.5所示操作;如果不需要,可直接进行下一步;

注意:本项目的mysql-connector-c-win64文件夹内含release和debug两种64位下的版本;

图1.5 替换版本操作

其次,如图1.6所示,使用Qt Creator打开./mysql/mysql.pro工程;

图1.6 mysql驱动生成工程

接着按照图1.7所示的操作进行,设置相应的编译环境及生成目录文件夹,最后选择‘构建’,就会生成相应驱动文件,其中生成的驱动链接文件放在outputDir中,如图1.8所示。
(可能编译会出现:Cannot read C:/Users/.qmake.conf: No such file or directory,可忽略不影最终响驱动文件生成)

图1.7 编译过程操作

图1.7 编译过程操作

图1.8 驱动文件生成目录

图1.8 驱动文件生成目录

图1.9 qsqlmysql.dll

图1.9 qsqlmysql.dll

3.3 复制文件(重要)

这里,以MSVC2019 64bit环境下编译为例,将生成的文件qsqlmysql.dll复制到./Qt/6.4.0/msvc2019_64/plugins/sqldrivers/下,同时也可将debug环境下qsqlmysqld.dll(需要在debug环境下编译生成)放入,如图2.1所示;

图2.1 mysql动态链接库

此外,还需要将mysql-connector-c-win64/lib文件下的libmysql.dll复制到./Qt/6.4.0/msvc2019_64/bin/下,同样也可将libmysqld.dll放入,用于debug环境,如图2.2所示;

图2.2 qt-mysql驱动插件

图2.2 qt-mysql驱动插件

3.4 测试连接

.proQT  += sql.cpp#include#includeint main(){    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");    db.setHostName("主机地址");  //连接本地主机    db.setPort(3306);    db.setDatabaseName("数据库名称");    db.setUserName("账户");    db.setPassword("密码");    bool ok = db.open();    if (ok){         qDebug() << "link success";    }    else {         qDebug() <<  "link failed";    }    return 0;}

注: 文中参考的其他资料2

今天到这里就结束啦,希望能帮助到你吧!撰写此文一方面为了记录日常开发过程遇到的问题,另一方面也希望能帮助和我遇到同样问题的小伙伴们,仅此而已~


  1. Qt连接MySQL数据库最详细的教程 ↩︎

  2. 彻底解决qt6.1.2,qmysql驱动. ↩︎

来源地址:https://blog.csdn.net/DreamerZC/article/details/128040436

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯