Qt+MySql开发笔记:Qt5.9.3的msvc2017x64版本编译MySql8.0.16版本驱动并Demo连接数据库测试

news/2024/4/26 13:21:00/文章来源:https://blog.csdn.net/qq21497936/article/details/130381428

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130381428

红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…

Qt开发专栏:三方库开发技术


前言

  mysql驱动版本msvc2015x32版本调好, mysql的mingw32版本的驱动上一个版本编译并测试好,有些三方库最低支持vs2017,所以只能使用msvc2017x64,基于Qt5.9.3,于是本篇编译mysql驱动的msvc2017x64版本,满足当前的特定需求,这次过程有点费劲,可能是Qt的版本低于Qt5.12,继续无保留分享出来。
  本篇主要描述Qt5.9.3 msvc2017x64 + mysql8.0.16的驱动编译过程。


相关博客

  《Qt+MySql开发笔记:Qt5.9.3的mingw32版本编译MySql8版本驱动并Demo连接数据库测试》
  《Qt+MySql开发笔记:Qt5.9.3的msvc2017x64版本编译MySql8.0.16版本驱动并Demo连接数据库测试》
  《MySql开发笔记:MySql数据库服务搭建以及建表脚本导入》
  《案例分享:Qt激光加工焊接设备信息化软件研发(西门子PLC,mysql数据库,用户权限控制,界面设计,参数定制,播放器,二维图,期限控制,参数调试等)》
  《案例分享:Qt工程机械真空激光焊接系统软件产品定制(西门子PLC,mysql数据库,用户权限控制,界面配置,参数定制,播放器,二维图标,rgv小车,期限控制,参数调试等)》


编译环境

Qt5.9.3 msvc2017x64

  安装得时候记得要勾选上源码

mysql-installer-community-8.0.16.0

  在这里插入图片描述

下载数据库

  https://downloads.mysql.com/archives/community/
  在这里插入图片描述


编译mysql驱动库(Qt5.9.3+mysql8.0.16)

步骤一:安装Qt5.9.3勾选msvc2017x64版本。

  在这里插入图片描述
  其他过程略。

步骤二:下载数据库64位驱动运行程序并解压

  下载数据库运行包文件。(注意:这里要注意跟目标机器安装的版本要一致)。
  下载地址:https://dev.mysql.com/downloads/connector/cpp
  (这里查看“入坑一”)
  直接越过了下载了,因为下载下来的目前编译都有问题
  数据库安装在本地,直接通过本地了:
  在这里插入图片描述

步骤三:打开qt中自带的mysql源码工程

  在这里插入图片描述

  使用QtCreator打开
  在这里插入图片描述

  这里要去掉shadow,否则会其他错误,参考“入坑一”和“入坑二”:
  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

步骤四:qmake并且build构建

  在这里插入图片描述

  在这里插入图片描述

  (这里要是报错就回过去看步骤三以及入坑一二)
  在这里插入图片描述

步骤五:替换插件的mysql库

  在这里插入图片描述

步骤六:将数据库的libmysql.dll拷贝到bin目录

  将mysql的lib下的libmysql.dll拷贝到qt的msvc2017x64的bin目录下,而且打包软件的时候也要带上。
  这里是直接将之前lib对应的libmysql.dll拷贝进qt的bin和应用部署文件夹下:
  在这里插入图片描述

  (PS:打包发布时windeployqt不会主动拷贝,是需要手动复制过去)

步骤七:编译应用连接测试

  将应用从odbc切入mysql驱动编译数据库的工程:
  在这里插入图片描述
  这里是因为mysql8修改了加密方式,直接使用mysql驱动的话要修改加密方式,修改方式主要是部署数据库的时候修改,可以登录数据库然后做如下操作:
  在这里插入图片描述

  然后应用登录测试
  在这里插入图片描述

  若还需要远程登录,则继续步骤八和九:

步骤八:配置数据库账号允许远程操作(这一步是之前mingw32的测试步骤,为了方便直接放这)

  这是因为账号不被允许远程登录,所以需要修改数据库用户的配置,让其允许远程登录。
  修改用户被允许远程登录,先使用mysql控制端输入密码登录,然后操
作:

use mysql;
select host,host from user;
update user set host = ‘%’ where user = ‘root’;
select host,host from user;

  这时候,还是不行,需要强行刷新以下

flush privileges;

  在这里插入图片描述
  在这里插入图片描述

  然后成功:
  在这里插入图片描述
  至此,Qt5.9.3 msvc2017x64 + mysql8.0.16数据库连接驱动编译完成。

步骤九:数据库的远程操作工具连接(这一步是之前mingw32的测试步骤,为了方便直接放这)

  使用远程工具测试,发现出错:
  在这里插入图片描述
  这是因为8.0之后mysql更改了密码的加密规则,目前的客户端连接软件还不支持Mysql8新增加的加密方式caching_sha2_password,所以需要修改用户的加密方式,将其改回旧加密验证方式。
  先登录mysql命令行,执行以下,主要是youPassword要替换为你使用远程登录的账户密码:

alter user 'root'@'%' identified by 'youPassword' password expire never;
alter user root identified with mysql_native_password by 'youPassword';
flush privileges;

  在这里插入图片描述

  在这里插入图片描述


入坑

入坑一:编译报错无法打开“无法打开输入文件“D:\mysql-connector-c-6.1.11-winx64\lib.ob”

问题

  编译错误,无法通过
  在这里插入图片描述

尝试解决

  多方查找,定位在提供的库的版本上,也不行。
  本次版本,最后尝试直接从mysql安装文件夹里面拿,可以通过,但是也没有看到根录下文件(后来检查路径才确认未生成到根目录下)。
  以下截图过程可参考:
  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述
  然后去掉shadow,成功了:
  在这里插入图片描述

解决

  去掉shaodw,路径查看“入坑二”。

入坑二:没有编译输出

问题

  按照之前mingw32编译的没找到输出

原因

  有些配置文件,所以直接全部构建,来看生成的文件夹
  在这里插入图片描述

  发现是路径问题。

解决

  找到到对应的路径,生成了。
  在这里插入图片描述
  综合一和二,还有尝试下载驱动库的编译器vc版本问题,这里解决差不多花了大半天了去尝试、摸索然后逐步排除各种问题。


若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130381428

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_103735.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构初阶】第七节.树和二叉树的基本操作

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:Java初阶数据结构 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目…

港科夜闻|香港科技大学(广州)与中国电信广东公司签署战略合作协议

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科技大学(广州)与中国电信广东公司签署战略合作协议。根据协议,双方将围绕各自科技创新及发展需要,整合双方的优质资源和优势能力,务实开展多方位的战略合作。本次合作&#xff0c…

6.微服务项目实战---Sleuth--链路追踪

6.1 链路追踪介绍 在大型系统的微服务化构建中,一个系统被拆分成了许多模块。这些模块负责不同的功能,组合成 系统,最终可以提供丰富的功能。在这种架构中,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上…

【算法与数据结构】6 学会对算法进行性能测试

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于算法与数据结构体系专栏,本专栏对于0基础者极为友好,欢迎与我一起完成算法与数据结构的从0到1的跨越 算法性能测试 一、前情回顾二、算法性能测试1.生成测试用例2.使用测…

多种内网穿透的实现方案

1. 内网穿透的应用场景 1.1. 开发调试 比如企业微信、钉钉等开发,需要一个回调地址,开发的时候,希望回调到开发的电脑上,打断点进行调试,这就需要穿透到内网的开发机器。 1.2. 演示测试 有需要演示或测试的系统&am…

SLAM论文速递:SLAM—— MID-Fusion:基于八叉树的对象级多实例动态SLAM—4.26(1)

论文信息 题目: MID-Fusion:Octree-based Object-Level Multi-Instance Dynamic SLAMMID-Fusion:基于八叉树的对象级多实例动态SLAM 论文地址: https://ieeexplore.ieee.org/abstract/document/8794371发表期刊: 2019 International Conf…

凌恩生物文献分享|一株细菌完成图也能发一区10分+!

期刊:Science of the Total Environment 影响因子:10.753 发表时间:2022 样本类型:Bosea sp. Ads-6菌株 客户单位:中国科学院微生物研究所 一、研究背景 环境中抗生素残留和耐药性的增加引发了许多…

亚马逊美国站纽扣电池标准

近日,亚马逊美国站公布要求卖家需遵守扭电池和硬币电池的新包装和警示标签规定公告。 在亚马逊销售单独的纽扣电池和硬币电池,则从2023年3月2日开始,您需要证明您的符合儿童安全包装和警告标签要求。 适用产品有;单独的纽扣电池或硬币电池&a…

Android SeekBar控制视频播放进度(二)——seekTo()不准确

Android SeekBar控制视频播放进度二——seekTo不准确 简介seekTo()视频帧 和 视频关键帧解决办法方法一方法二 简介 上一篇文章中,我们介绍了使用SeekBar控制视频播放,使用过程中发现,对于一些视频,我们拖动SeekBar进度条调节播放…

谈谈如何用开源网关进行 API 管理

需求痛点 1.企业不清楚到底有多少个API,无法形成API资产管理等问题。 2.API在不同集群的生命周期问题。 3.API运行状态监控和告警问题。 4.API请求限流、流量控制以及安全等问题。 功能介绍 Apinto的API管理提供API生命周期控制:可管理所有API&…

【DRF配置管理】如何在视图类使用get_objects()

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 DRF应用和管理 【DRF配置管理】Django使用DRF框架 【DRF配置管理】如何在视图类配置参数(一) 【DRF配置管理】如何在视图类配置参数(二) 【DRF配置管理…

跨数据中心下的 Kafka 高可用架构分析

导语 本文介绍了 Kafka 跨数据中心的两种部署方式,简要分析两种方式下的不同架构以及优缺点,对这些架构可能碰到的问题也提供了一些解决思路;同时也说明了 Kafka 跨数据中心部署的社区解决方案和商业化解决方案。 背景 Kafka 作为世界上最…

Excel技能之实用技巧,高手私藏

今天来讲一下Excel技巧,工作常用,高手私藏。能帮到你是我最大的荣幸。 与其加班熬夜赶进度,不如下班学习提效率。能力有成长,效率提上去,自然不用加班。 消化吸收,工作中立马使用,感觉真不错。…

宠物领养系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址:https://download.csdn.net/download/qq_50954361/87708775 更多系统资源库…

「OceanBase 4.1 体验」|大厂开始接入的国产分布式数据库,不来了解了解?

OceanBase 4.1 体验 前言OCP Express在线升级功能租户级物理备库TP(事务处理)和AP(分析处理)优化TP 性能优化AP 性能优化 结尾 前言 上次我们讲了本人自己亲自上手OceanBase 4.1的初体验,国产的分布式数据库也太太太太…

【STM32】基础知识 第八课 MDK 工程

【STM32】基础知识 第八课 MDK 工程 准备工作新建寄存器版本 MDK 工程步骤新建工程文件夹添加文件魔术棒设置绝对路径和相对路径对比测试程序 新建 HAL 库版本 MDK 工程CMSISHAL 库简介DriversMiddlewaresDevice 和 Include HAL 库文件介绍HAL 库 API 函数和比那辆命名规则HAL …

【ArcGIS】常见问题总结

1 arcgis如何打开*.adf文件 在处理数据时发现,获取到的土地利用类型数据有两个文件夹,一个叫info,另一个叫lucc2010(年份),打开lucc2010里面是一系列的*.adf文件,数据应该如何打开呢&#xff1…

【Vue】Vue 前端设计模式梳理

文章目录 一、什么是设计模式?二、设计几个原则三、常见的设计模式及实际案例【1】单例模式1. 什么是单例模式?2.Vue中的单例模式 【2】工厂模式1. 什么是工厂模式?2.Vue中的工厂模式 【3】策略模式1. 什么是策略模式?2.策略模式的…

QT笔记——QtPropertyBrowser的使用

上一节,我们将了如何去配置QtPropertyBrowser 本节,我们将说明 如何 去 使用QtPropertyBrowser 这个属性类的一些基本知识 简单的几种用法: 首先: 我们需要创建一个Widget 提升一个类 为 QtTreePropertyBrowser .h文件 QtVariant…

详解客户关系管理系统

一、客户关系管理系统的重要性 客户关系管理系统,是指利用软件、硬件和网络技术,为企业建立一个客户信息收集、管理、分析和利用的信息系统。以客户数据的管理为核心,记录企业在市场营销和销售过程中和客户发生的各种交互行为,以…