qt没有mysql驱动的解决办法

2023-11-08

qt没有mysql驱动的解决办法

第一部分 qtcreator上没有mysql驱动的解决办法

第一步:找到你的qt的版本的源码src

在源码下找到你的mysql
我的在F:\Qt\5.14.1\qt-everywhere-src-5.14.1\qt-everywhere-src-5.14.1\qtbase\src\plugins\sqldrivers\mysql

你的mysql文件应该在…\qtbase\src\plugins\sqldrivers\mysql,前面的路径是你自己将他放在的位置,后边的应该一致

在这里插入图片描述


第二步,点击mysql.pro,电脑会自动打开qtcreater,然后就是进行编译器的选择,我选择的是:在这里插入图片描述

当你构建成功后,界面是这样的:
在这里插入图片描述


第三步:修改你的mysql.pro

在这里插入图片描述
具体内容:

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql


INCLUDEPATH += $$quote("C:\Program Files\MySQL\MySQL Server 8.0\include")	#本机mysql的include目录
LIBS += -L$$quote("C:\Program Files\MySQL\MySQL Server 8.0\lib") -lmysql	#本机mysql的lib目录
#注:当你去找的你电脑上的mysql路径时,你会发现大概率你的路径和我的路径是一致的,这应该和mysql的安装方式有关吧!

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin

#指定这个文件的绝对地址,具体这个路径的位置你可以看下图"qsqldriverbase.pri的路径"
include(F:\Qt\5.14.1\qt-everywhere-src-5.14.1\qt-everywhere-src-5.14.1\qtbase\src\plugins\sqldrivers\qsqldriverbase.pri)	



qsqldriverbase.pri的路径:其实很好找,就在mysql文件夹的上级目录中
在这里插入图片描述


第四步:然后再修改一下sqldriverbase.pri

在这里插入图片描述
具体内容:

QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)

include(./configure.pri)

PLUGIN_TYPE = sqldrivers
load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

第五步:构建项目

执行后,F盘下会出现plugins文件夹,进入F:\plugins\sqldrivers中,可以看到qsqlmysql.dll文件;

在这里插入图片描述

那么F:\plugins\sqldrivers怎么找呢?
我的qt环境装在F:
而F:\plugins就生成在你的qt环境的同级目录 或者 qt环境的上级目录中
在这里插入图片描述

第六步:

将F:\plugins\sqldrivers目录下的qsqlmysql.dll文件复制到F:\Qt\5.14.1\mingw73_64\plugins\sqldrivers
在这里插入图片描述

第七步:测试:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlDatabase>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QStringList list = QSqlDatabase::drivers();
    qDebug() << list;//打印支持的sql驱动
}

MainWindow::~MainWindow()
{
    delete ui;
}

我们发现,输出结果中出现了"QMYSQL", “QMYSQL3”,说明:大功告成!
在这里插入图片描述

注:我用的是mingw64位,mingw32位不可用,msvc2017_64也不可用

参考:

Qt缺少Mysq驱动QMYSQL driver not loaded
Windows环境下Qt缺少Mysql驱动的问题解决方案

第二部分 vs2019上没有mysql驱动的解决办法

接下来是讲:msvc2017_64没有mysql驱动怎么办?(与第一部分有少许不同)
在这里插入图片描述

第一步:找到源码:

如果你是做完第一部分,然后再做第二部分,那你就要把操作过的第一部分的源码删掉 ; 如果你是直接看的第二部分,那就不用删,找到你的源码即可
删除重新解压源码,源码的下载地址:qt源码下载

找到源码
在源码下找到你的mysql
我的在F:\Qt\5.14.1\qt-everywhere-src-5.14.1\qt-everywhere-src-5.14.1\qtbase\src\plugins\sqldrivers\mysql

你的mysql文件应该在…\qtbase\src\plugins\sqldrivers\mysql,前面的路径是你自己将他放在的位置,后边的应该一致
在这里插入图片描述


第二步,点击mysql.pro,电脑会自动打开qtcreater,然后就是进行编译器的选择,我选择的是:msvc2017编译器在这里插入图片描述


第三步:修改mysql.pro

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

#该路径是mysql的头文件路径
INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 8.0\include"
#这是MySQL的库文件路径/
LIBS += "C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.lib"

#为了方便查找,不妨增加一条语句,该语句用来指明编译后的结果输出的位置
#所以说,一会编译成功了,我要的文件就在F:\Qt\5.14.1\qt-everywhere-src-5.14.1\qt-everywhere-src-5.14.1\qtbase\src\plugins\sqldrivers\mysql\mysql\lib里面
#你就直接写成一个你知道的路径,一会去那里找就行了(代号:1)
DESTDIR  = ../mysql/lib/

第四步:修改qsqldriverbase.pri

QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri)
PLUGIN_TYPE = sqldrivers
load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

第五步:修改msvc-version.conf文件

文件路径:
F:\Qt\5.14.1\msvc2017_64\mkspecs\common\msvc-version.conf

在前面加一句QMAKE_MSC_VER = 1909(对应自己的编译器版本,里面会提示的,我是vs2017):
在这里插入图片描述


第六步:编译

编译成功之后,
找到F:\Qt\5.14.1\qt-everywhere-src-5.14.1\qt-everywhere-src-5.14.1\qtbase\src\plugins\sqldrivers\mysql\mysql\lib
也就是刚才写的(代号:1)那个路径…/mysql/lib/
再说明一下吧,其实就是"我们正在构建的mysql这个项目"路径下的/mysql/lib/

打开如图:
在这里插入图片描述
在这里插入图片描述


第七步:

把qsqlmysql.dll和qsqlmysqld.dll复制到F:\Qt\5.14.1\msvc2017_64\plugins\sqldrivers下,并且把mysql的lib目录下的libmysql.dll复制到F:\Qt\5.14.1\msvc2017_64\bin下就可以运行了。


第八步:测试

#include "DBTest_msvc2017_64.h"
#include <QSqlDatabase>
#include <QDebug>

DBTest_msvc2017_64::DBTest_msvc2017_64(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    QStringList list = QSqlDatabase::drivers();
    qDebug() << list;//打印支持的sql驱动

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName("数据库名称");		// 数据库名称
    db.setHostName("主机名");			    // 主机名
    db.setUserName("数据库,用户名");		// 数据库,用户名
    db.setPassword("数据库,密码");		    // 数据库,密码
    db.setPort(3306);						// 数据库,端口
}

DBTest_msvc2017_64::~DBTest_msvc2017_64()
{}

ok!大工告成!
在这里插入图片描述


参考:

Qt连接MySQL数据驱动(绝对有效)
Qt缺少Mysq驱动QMYSQL driver not loaded

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

qt没有mysql驱动的解决办法 的相关文章

  • covertJSONtoSQL 在 NiFi 中返回空值

    我正在设计一项工作 使用以下命令将数据从 MySQL 中的数据库转移到另一个数据库 MySQL 执行SQL处理器随后将Avro转换为Json then 将Json转换为SQL then PutSQL如下流程图所示 将JSON转换为SQL返回
  • 是否可以根据 QSlider 的位置来改变其手柄的颜色?

    我非常清楚如何通过样式表自定义 QSlider 但我想知道是否可以执行以下操作 我希望滑块的手柄从蓝色变为黄色 当设置在左侧时 它是蓝色的 设置在左侧时 它是蓝色的 当你将它向右移动时 它会出现从蓝色到黄色的渐变 如果可以通过样式表 如何实
  • Qt:更改 Mac OS X 上的应用程序 QMenuBar 内容

    我的应用程序对多个 页面 使用 QTabWidget 其中顶级菜单根据用户所在的页面而变化 我的问题是 尝试重新创建菜单栏的内容会导致严重的显示问题 它在除 Mac OS X 之外的所有平台上按预期使用第一种和第三种样式 尚未测试第二种 但
  • 在 Qt GraphicsView 中创建长线(或十字线)光标的最佳方法

    创建长十字线光标 与视口一样长 的简单方法是创建一条十字线graphicsItem 当鼠标移动时 设置该项目的pos财产 但是当场景复杂时这种方式会很慢 因为它要更新整个视口来更新光标的pos 另一种简单的方法是setCursor QCur
  • MySQL“LIKE”搜索不起作用

    我通过 LOAD DATA INFILE 在 MySQL 中导入了一个 txt 数据库 一切似乎都正常 唯一的问题是 如果我使用以下查询在数据库上搜索记录 SELECT FROM hobby WHERE name LIKE Beading
  • SQL Join 列上类似于另一列[重复]

    这个问题在这里已经有答案了 可能的重复 mysql连接查询使用like https stackoverflow com questions 1930809 mysql join query using like 我想要进行连接 其中一列包含
  • PHP 和 MySQL - 高效处理多个一对多关系

    我正在寻求一些有关使用 MySQL 和 PHP 检索和显示数据的最佳方法的建议 我有 3 个表 所有一对多关系如下 Each SCHEDULE有很多覆盖每个覆盖都有很多地点 我想检索这些数据 以便它可以全部显示在单个 PHP 页面上 例如列
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • mysql 中的二进制、十六进制和八进制值

    我对在 mysql 数据库中使用二进制 十六进制和八进制系统非常感兴趣 首先 请给我一个建议 为什么我们在存储信息时需要它们 因为信息太多 或者为什么 另外 哪种类型的值必须存储在标记系统中 另外这里还有像 这是例子 gt SELECT 5
  • 非常大的字段会对 MySQL 数据库产生负面影响吗?

    我目前正在使用 Django 构建一个网站 并希望托管用户生物样式页面 该页面可能长达几 KB 这些字段不一定需要搜索 但在查找用户名时确实需要提供 将这些数据存储在数据库中会产生负面影响吗 如果我使用带有数据库链接的静态文本文件 我的服务
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • 将庞大数据库从亚马逊RDS导出到本地mysql

    我在 Amazon RDS 上有一个 mysql 数据库 大约 600GB 数据 我需要将其移回本地专用服务器 但我不知道从哪里开始 每次我尝试初始化 sqldump 时它都会冻结 有没有办法将其移至 S3 甚至可能在开始下载之前将其分成更
  • 一个具有完全透明背景的qt小部件

    我需要创建一个 qt 小部件 它将充当其他一些小部件的父级 并对它们进行排序 现在的问题是如何使其背景完全透明 我想这样做 struct Imp Imp QWidget parent thisWidget new QWidget paren
  • 如何检测Mysql/innodb中的死锁?

    我知道在 Innodb 中使用事务时不可避免地会发生死锁 并且如果应用程序代码正确处理死锁 它们是无害的 正如手册所说 只需再试一次 所以我想知道 如何检测死锁 死锁是否会发出一些特殊的 mysql 错误号 如果重要的话 我正在使用 PHP
  • MYSQL - 使用逗号分隔字符串作为变量输入的存储过程

    我希望有人能够提供帮助 我已经创建了我的第一个存储过程 没什么花哨的 但是我遇到了问题 我想给它一个字符串输入 例如 1 2 3 4 5 然后它执行一个简单的操作SELECT FROM TABLE WHERE EAN IN VAR 所以存储
  • PyQt5 使动态小部件可点击并将参数传递给另一个函数

    我正在尝试制作动态小部件并使它们可点击 通过单击一个小部件 它应该将动态值传递给其他小部件 我尝试过 sender 和其他访问小部件的选项 但没有任何效果 所有小部件都从最后一个小部件发送信息 下面是代码 import sys from P
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主

随机推荐

  • ➹使用webpack配置多页面应用(MPA)

    使用webpack配置MPA 为什么需要使用 webpack 构建多页应用呢 因为某些项目使用 SPA 不太合适 大多是 SEO 的原因 或者您在做项目时有其他的需求 如果你有如下需求 使用 ES6 进行开发 期望使用面向对象开发 clas
  • java 文件备注_JAVA 文档注释

    JAVA文档注释 一JAVA注释类型 Java注释分为三类 1单行注释 2多行注释 3文档注释 单行注释多行注释 主要用于代码辅助性的说明便于理解代码的逻辑 文档注释 主要用生成API文档 二文档注释类型 文档注释紧挨类方法属性前面放置否则
  • Kyligence Zen产品体验——一站式指标平台泰酷辣~

    文章目录 一 前言 二 为什么需要指标化平台 三 什么是Kyligence Zen 四 Kyligence Zen新特性 五 Kyligence Zen注册篇 六 Kyligence Zen体验篇 七 Kyligence Zen实战篇 7
  • 安卓百度地图开发(三)在定位图层获取指南针角度

    在官方文档中没有给出获取角度的方法 这里使用了安卓自带的传感器获取指南针角度 首先定义传感器和角度 private SensorManager mSensorManager double degree 0 在oncreate方法中初始化传感
  • Xmind使用技巧

    新建图表 根据需求 可新建为空白图表或模板图表 空白图 模板 提高工作效率 其中因果分析 鱼普 图 SWOT分析 比较与对比 读书笔记等常用 也可以新建空白图 改变鱼头的左右方向 相比就是样式没有模板的那么丰富
  • 操作系统 请求分页存储管理

    目录 请求分页存储管理中的页表机制 缺页中断机构 地址转换 页置换算法 页分配和页置换策略 工作集及抖动现象的消除 请求分页存储管理的优缺点 请求分页存储管理中的页表机制 系统需要解决的问题 系统如何获知进程当前所需页面不在主存 当发现缺页
  • 记录一次FISCO BCOS的console启动失败的问题(create BcosSDK failed for the number of available peers is 0)

    记录一次FISCO BCOS的console启动失败的问题 报错 create BcosSDK failed for the number of available peers is 0 版本 FISCO BCOS v2 7 0 conso
  • 新多模态大模型霸榜!支持图文混合输入,不懂知识还能现学

    克雷西 发自 凹非寺量子位 公众号 QbitAI 多模态大模型家族 又有新成员了 不仅能将多张图像与文本结合分析 还能处理视频中的时空关系 这款免费开源的模型 在MMbench和MME榜单同时登顶 目前浮动排名也保持在前三位 MMBench
  • 物联网的应用场景

    随着物联网技术的不断发展和普及 它已经在各个领域展现出了巨大的潜力和前景 下面将会探讨物联网的应用前景 1 智能家居 智能家居是物联网技术最广泛应用的领域之一 通过智能家居设备 人们可以在任何时间 任何地点通过手机 平板电脑等设备远程控制家
  • 深度学习原理分析之数据不足与过拟合

    人们常常知道若干种解决过拟合的方法但不知其因 本文对其进行原理剖析 一个模型所能提供的信息一般来源于两个方面 一是训练数据中蕴含的信息 二是在模型的形成过程中 包括构造 学习 推理等 人们提供的先验信息 当训练数据不足时 说明模型从原始数据
  • Spring Boot官方例子《Developing Your First Spring Boot Application》无法运行

    官方的第一个例子就卡住了 https docs spring io spring boot docs current reference htmlsingle getting started first application 按照要求 一
  • 【消息队列】kafka consumer demo

    package consumer import org apache kafka clients consumer ConsumerConfig import org apache kafka clients consumer Consum
  • git常用命令及免密登录

    常用命令 git config global user name 用户名 设置用户签名 git config global user email 邮箱 设置用户签名 git init 初始化本地库 git status 查看本地库状态 gi
  • 多线程写图像文件的一点小测试(Boost + Gual)

    转载自 http blog csdn net liminlu0314 article details 7420484 在处理遥感图像中 发现往往比较耗时的是在数据的IO中 尤其是在O 写入 的时候更加耗时 GDAL可以支持图像的多线程写入
  • 蓝桥杯——修改数组

    问题描述 给定一个长度为N的数组A A1 A2 AN 数组中有可能有重复出现的整数 在小明要按以下方法将其修改为没有重复整数的数组 小明会依次修改A2 A3 AN 当修改Ai时 小明会检查Ai是否在A1 Ai 1中出现过 如果出现过 则小明
  • C#中的事件和委托_札记1

    C 中的事件和委托 札记1 委托 自定义委托 静态方法 被委托 委托是一种类型 所以任何定义类的地方都可以定义委托类型 自定义委托的基本格式示例如下
  • RobotFramework 安装教程

    动化测试框架 具盘点 安装步骤 页面介绍 标准库 不需要安装 直接 RF 带 扩展库 快捷键 实战 RobotFramework 安装教程 动化测试框架 具盘点 java junit和testng 具 postmen newman git
  • html动态爱心代码【二】(附源码)

    目录 前言 效果演示 内容修改 完整代码 总结 前言 七夕马上就要到了 为了帮助大家高效表白 下面再给大家带来了实用的HTML浪漫表白代码 附源码 背景音乐 可用于520 情人节 生日 表白等场景 可直接使用 效果演示 内容修改 文案 di
  • go - flag包(处理命令行参数小能手)

    前言 在golang中有很多方法来处理命令行参数 简单情况下可以不使用任何库 直接使用os Args 但是golang标准库提供了flag包来专门处理命令行参数 当然还有第三方提供的处理命令行参数的库cobra cli可以参考 flag包绑
  • qt没有mysql驱动的解决办法

    qt没有mysql驱动的解决办法 第一部分 qtcreator上没有mysql驱动的解决办法 第一步 找到你的qt的版本的源码src 第二步 点击mysql pro 电脑会自动打开qtcreater 然后就是进行编译器的选择 我选择的是 在