Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >解决Qt5无法连接MySQL数据库的问题

解决Qt5无法连接MySQL数据库的问题

作者头像
字节星球Henry
发布于 2021-12-14 05:51:50
发布于 2021-12-14 05:51:50
5.8K00
代码可运行
举报
运行总次数:0
代码可运行

引言

我最近打算开一个新项目,会用到 Qt5 和 MySQL,没想到刚开始就遇到了问题...

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

大体意思就是,这个 QSqlDatabase 里面压根就没有 QMySQL 这个驱动,在我印象中 Qt 肯定是自带了 MySQL 驱动的,搜索了一下知道了原因,在老版本的 Qt 中(5.9 还是 5.12?)在 C:\Qt\Qt5.xx\5.xx\mingwxx_xx\plugins\sqldrivers 这个目录下,有 qsqlmysql.dll 这个文件,我这边当然是没有了...所以 MySQL 肯定连不上了,既然没有那只能自己编译了,不可能去网上找吧,不同版本的文件也不同。

注意:不同版本的 MySQL 里面包含不同的 libmysql.dll,不同的 libmysql.dll 必须和配套的 qsqlmysqld.dll (debug 版)或 qsqlmysql.dll(release 版) 一起才能正常工作!

Qt MySQL 驱动搭建

准备

编译前,请确认以下几点:

  1. 你的 Qt 安装时是否选择了 Sources。
  2. 你的 Qt 安装时是否选择的 64 位的 MinGW。

很多人应该没有选择 Sources 这一项,问题不大,在控制面板-> 卸载程序中找到 Qt 右键选择更改,自行添加 Sources 这个选项,具体做法可以借助搜索引擎,不怕麻烦的也可以直接重新按要求安装 Qt。

然后确定一下你的 C:\Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers 文件夹里是否如我描述的那样没有 qsqlmysql.dll 文件,然后再开始下一步。

编译

添加 Qt mingw 64 的环境变量,既然你都接触 Qt 了,环境变量对你来说应该是很熟悉的字眼了,就不说明怎么添加了,分别要添加的路径是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C:\Qt\5.14.2\mingw73_64\bin\
C:\Qt\Tools\mingw730_64\bin\

将以上路径替换成你自己的 Qt 安装路径即可,一定不要搞错了。

然后准备好你的 Qt 路径和 MySQL 路径,在终端中分别执行以下四行命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers
qmake -- MYSQL_INCDIR="C:\mysql-5.7.36-winx64\include" MYSQL_LIBDIR="C:\mysql-5.7.36-winx64\lib"
mingw32-make
mingw32-make install

上面的路径依然是我自己的路径,请务必更改为自己的 Qt 和 MySQL 路径!

执行完第二行命令后,正常情况会输出一下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Info: creating stash file C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\.qmake.stash

Running configuration tests...
Checking for DB2 (IBM)... no
Checking for InterBase... no
Checking for MySQL... yes
Checking for OCI (Oracle)... no
Checking for ODBC... yes
Checking for PostgreSQL... no
Checking for SQLite (version 2)... no
Checking for TDS (Sybase)... no
Done running configuration tests.

Configure summary:

Qt Sql Drivers:
  DB2 (IBM) .............................. no
  InterBase .............................. no
  MySql .................................. yes
  OCI (Oracle) ........................... no
  ODBC ................................... yes
  PostgreSQL ............................. no
  SQLite2 ................................ no
  SQLite ................................. yes
    Using system provided SQLite ......... no
  TDS (Sybase) ........................... no

Qt is now configured for building. Just run 'mingw32-make'.
Once everything is built, you must run 'mingw32-make install'.
Qt will be installed into 'C:\Qt\Qt5.14.2\5.14.2\mingw73_64'.

Prior to reconfiguration, make sure you remove any leftovers from
the previous build.

其中你需要关注你的 Checking for MySQL...后面和 Qt Sql Drivers 中的 MySql 是否都是 yes,如果不是,请检查你的路径和编译前的要求,无误后重新执行命令。

然后进行 make 和 install,中途可能会报一些 Warning,问题不大,只要命令执行完成后,你的 sqldrivers 文件夹中出现了如图所示的 qsqlmysql.dll 就代表编译完成了。

最后

将你的 libmysql.dll 放入你的 exe 文件所在目录,MySQL 数据库即可成功连接,项目最终打包上线时,也别忘了将 libmysql.dll 打包进去。

也可以编辑 qmake 的.pro 文件,在其中把该链接库加进去,但打包时还是需要自行添加 libmysql.dll:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
LIBS += "C:\mysql-5.7.36-winx64\lib\libmysql.dll"
#或添加
LIBS += -LC:\mysql-5.7.36-winx64\lib\ -llibmysql

libmysql.dll 在你的 MySQL 目录下的 lib 文件夹内,不同版本也是不能混用,这里推荐 MySQL5.7。

Henry 2021-12-13 未经授权 禁止转载

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Qt-访问mysql数据库
QT支持很多不同的数据库,包括:Sqlite, MySQL, SqlServer等等,QT里面提供了访问这些数据库的插件代码,这使得我们可以很方便的访问数据库。 QT支持很多不同的数据库,包括:Sqlite, MySQL, SqlServer等等,QT里面提供了访问这些数据库的插件代码,这使得我们可以很方便的访问数据库。 Qt 5 的 SDK 默认提供了编译好的 MySQL 驱动插件,位于 plugins/sqldrivers(Windows 下为 qsqlmysql.dll)。
kdyonly
2023/03/03
5.1K0
记录:编译Qt5.0连接MySql5.5数据库的驱动
第一步 1、准备好Mysql数据库安装文件,Qt5.0完整的离线安装包,以及Qt5.0的完整的源代码。安装好程序,假设Mysql的安装路径为:C:\MySQL5.5,Qt5.0的安装路径:C:\Qt\Qt5.0.0-rc2\5.0.0-rc2,而Qt5.0的解压路径为:C:\Qt\qt-5.0.1-src。   注意事项: (1)安装mysql数据库的时候,网上很多教程说要选择自定义安装,并把lib和include这个选项选上。其实这个并不重要。因为我机器上很久前装mysql时选的是typical安装的,在
24K纯开源
2018/01/18
2.9K0
记录:编译Qt5.0连接MySql5.5数据库的驱动
QT连接mysql出错
1.如果提示QSqlDatabase: QMYSQL driver not loaded 解决方法: 在确保qt和mysql同位数的情况下,将mysql\lib中的libmysql.dll复制到Qt\Qt5.6.1\5.6\mingw49_32\bin中。
花狗Fdog
2020/10/28
2.8K0
44.QT-安装MySQL、测试连接MySQL
在上章学习了42.QT-操作SQLite数据库后,发现MySQL和SQLite的语句都大致相同,所以本章只测试MySQL是否能使用
诺谦
2019/06/14
3.2K0
ubuntu下安装qt 的mysql 驱动遇到的问题
s1mba
2018/01/03
2.5K0
ubuntu下安装qt 的mysql 驱动遇到的问题
QT5静态编译教程,主要针对vs2012
QT5,VS2012静态编译,所有的库准备充分的话qwebkit也可以静态编译通过,但是我编译的版本使用中如果用了QWEBVIEW控件在连接时会出错。 注:我自己编译的环境是:win server 2012 dc版 , vs2012 with update1,qt-everywhere-opensource-src-5.0.2,perl和rupy都是在qt官方给的地址下的最新的X64的,python是2.7 X64的、、、 本文主要针对qt 5.X版本,qt4.X的依赖没那么多,可以酌情参考下,但是好像用途不大、、 编译器主要针对VS2012,vs2010和mingw的就编译时参数换一个就行了,文中会有简单提起、、、 编译主要是静态编译,但是静态编译的话问题很多,我虽然不报错编译完成,但是使用没测试,已知的是我编译的版本qtwebkit使用时 QWEBVIEW控件在连接时会出错。如果您要是动态编译的话在编译依赖库(icu,openssl)时动态编译就行了,在configure时不要-static选项即可。 虽然我编译通过了,但是还是借鉴了网上很多教程,先发借鉴的链接,尊重版权: http://www.ktao.net/archives/125  //这个编译好像只编译了qtbase,qtwebkit那块原来我准备的连接库不足,没成功,就没再测试。 http://www.cnblogs.com/wader/archive/2013/01/19/qt5_vc2012.html //这个是说动态连接的,但是很对。 http://qt-project.org/wiki/Building_Qt_5_from_Git  //官方的编译方法 1、准备编译需要的环境   1.1准备编译器       这个不需要多说了吧?就是安装vs或者mingw、、、       vs系列可以去:http://msdn.itellyou.cn/ 下载,vs2012或者2010别用太低的版本,qt5要用c++11,只有这俩部分支持、、、       mingw您可以用qt官方mingw版的,自带的版本,您也可以自己去下,用tdm-gcc安装方便点:http://tdm-gcc.tdragon.net/download,您也可以自己搜、、    1.2准备其他需要的工具     qt5还需要perl,pyhon,rupy、、    Get Perl from: http://www.activestate.com/activeperl/downloads [activestate.com]    Get Python from: http://www.python.org/download/releases/ [python.org] //有说需要用2.7版版本的。3.3的不行,我是用的2.7,没试试3.3的    Get Ruby from: http://www.rubyinstaller.org/ [rubyinstaller.org] 2.准备源码     这个我啥也不用说了吧、、、去官网下载,http://releases.qt-project.org/digia/ 这儿可以下载最新的、、、或者用git下载(这个我也不会用)、、、   2.x配置源码:如果需要静态编译就需要了,动态编译请跳过:     先说vs的:修改 源码目录\qtbase\mkspecs\win32-msvc*\qmake.conf   //win32-msvc*,*是您用的vs版本、、、       找到这几句;                       QMAKE_CFLAGS_WARN_OFF   = -W0                        QMAKE_CFLAGS_RELEASE    = -O2 -MD                      QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi                     QMAKE_CFLAGS_DEBUG      = -Zi -MDd     把MD和MDT改成MT和MTD,如下: //因为md是动态连接运行时库,MT是把运行时库包含到程序里                       QMAKE_CFLAGS_WARN_OFF   = -W0                        QMAKE_CFLAGS_RELEASE    = -O2 -MT                      QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi                     QMAKE_CFLAG
用户3519280
2023/07/06
4540
QT开发日志:QT数据库操作:SQLite与MySQL的集成
在QT开发过程中,数据库操作是非常重要的一环。本文将详细记录如何在QT中集成SQLite与MySQL数据库,分享开发过程中的经验和遇到的问题及解决方案。
鸽芷咕
2025/05/31
1550
linux下编译qt5.6.0静态库
编译QT是一件比较麻烦的事情。所以如果没有必要,就不要编译了。如果你只需要使用QT的一些基本功能,那么就只编译源码目录下的qtbase目录下的东西即可。 下面所介绍的都只是在linux下适用的(windows下使用MinGW也可以,QT提供的MinGW安装包是32位的,需要64位的可以参考)。 在编译前,最好先安装完成相关的依赖包,主要是xcb/opengl等。编译器使用gcc5及以上版本速度会比较快。i5-4460 CPU @ 3.20GHz+8G内存下编译时间大概是2.5个小时。 编译的时候对磁盘空间要求非常非常的大75G ./qt-src/qt-opensource-src-5.6.0(这是还没有完全编译完时候的情况),如果无法接受,就别编译debug版本和examples了。
用户3519280
2023/07/06
1.7K0
linux下编译qt5.6.0静态库
Windows下Qt静态编译全解
下载NOKIA网站上的QT SDK,解压或安装到相关目录。 本文以QT 4.6.2为例,下载地址:http://get.qt.nokia.com/qt/source/qt-win-opensource-4.6.2-vs2008.exe
用户3519280
2023/07/06
8520
QT编译报错:Please #define _AFXDLL or do not use /MD[d],请大神指导折腾一下午终成此文 理论上本教程支持其他编译环境和qt版本 环境:qt5.2.1源码包(
QT编译报错:Please #define _AFXDLL or do not use /MD[d],请大神指导
用户3519280
2023/07/06
7180
Qt对MySql数据库的增删查改操作
开发工具:Qt Creator 4.2.1 (Community) 开发平台:windows 7 数据库:MySql 5.5.45 一、在.pro配置文件中添加添加数据库 QT       += core gui sql   #后面追加上sql 二、头文件引入 #include <QDebug> #include <QMessageBox> #include <QSqlError> #include <QSqlQuery> #include <QVariantList> 三、下面直接上代码     //打印
Sindsun
2019/12/10
6.6K0
【MySQL】C or C++连接MySQL数据库
C:\Program Files\MySQL\MySQL Server 8.0\lib
半生瓜的blog
2023/05/13
3.6K0
【MySQL】C or C++连接MySQL数据库
Qt:windows下Qt安装教程
Qt5.12下载网址: http://download.qt.io/archive/qt/5.12/5.12.2/
全栈程序员站长
2022/08/29
7K0
Qt:windows下Qt安装教程
QT进阶学习——如何通过QT连接云服务器的MySQL数据库并进行数据库操作 和 数据表的增删改查
QT进阶学习——如何通过QT连接云服务器的MySQL数据库并进行数据库操作 和 数据表的增删改查
Arya
2024/10/23
6470
QT进阶学习——如何通过QT连接云服务器的MySQL数据库并进行数据库操作 和 数据表的增删改查
Qt编写控件属性设计器9-数据库采集
数据库作为数据源,在很多组态软件中使用非常多,指定数据库类型,填写好数据库连接信息,指定对应的数据库表和字段,采集间隔,程序按照采集间隔自动采集数据库数据,绑定到界面上的控件赋值显示即可。使用数据库作为数据源,有个非常大的好处就是不用去写额外的通信代码,也与对方的什么语言什么平台无关,不会有扯皮的事情发生,例如通信协议不规范不准确导致解析不对的情况啊,这样就支持任意的语言和平台啦,毕竟有数据库这个中间载体过渡,而且任何语言任何平台都会有数据库,都兼容,所以采用数据库作为数据源不失为一种很好的方案,可以专注于软件功能的持续集成。
feiyangqingyun
2019/09/14
9880
Qt编写控件属性设计器9-数据库采集
Qt中操作SQLite数据库
Qt SQL模块使用驱动程序插件(plugins)与不同的数据库API进行通信。由于Qt的SQL模块API与数据库无关,因此所有特定于数据库的代码都包含在这些驱动程序中。Qt提供了几个驱动程序,也可以添加其他驱动程序。提供驱动程序源代码,可用作编写自己的驱动程序的模型。
全栈程序员站长
2022/11/17
2.4K0
Qt中操作SQLite数据库
VS2015静态编译Qt5.5.1(包括Qtwebkit)
项目中需要用到webkit,调研了webkit源码,但是源码比较庞大,用xcode编译很方便,但是本人不熟悉mac下编程,所以研究了一段时间之后只能作罢。后来了解到Qtwebkit做了不少精简的工作,而且qt对跨平台比较友好,所以转而研究Qtwebkit。研究第一步是要编译Qt和Qtwebkit,本文记录了VS2015静态编译Qt5.5.1的过程,参考了网上相关文章,做了一些补充和修改。
用户3519280
2023/07/06
4930
vs2015连接mysql数据库准备步骤以及相关错误
数据库下载地址https://downloads.mysql.com/archives/community/
花狗Fdog
2020/10/28
1.9K0
在VC6.0中连接mysql数据库的方法实例
(本文年代久远,请谨慎阅读)最近用JAVA写程序,在连接数据库并操作上感觉还是较其他语言简单多了,在这方面C/C++就显得有点繁杂,不过也并非难事。 首先就是要清除mysql提供的关于C的API,连接:http://dev.mysql.com/doc/refman/5.1/zh/apis.html
ZONGLYN
2019/08/08
2.9K0
vc++连接sql数据库_vscode怎么连接数据库
vc连接mysql数据库的方法:首先打开VC6;然后在中间列表框中添加本地安装MySQL的include目录路径;接着选中“Library files”并添加MySQL的Lib目录路径;最后进行编程测试即可。
全栈程序员站长
2022/09/22
6.7K0
vc++连接sql数据库_vscode怎么连接数据库
推荐阅读
相关推荐
Qt-访问mysql数据库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验