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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: mysql驱动版本msvc2015x32版本调好, mysql的mingw32版本的驱动上一个版本编译并测试好,有些三方库最低支持vs2017,所以只能使用msvc2017x64,基于Qt5.9.3,于是本篇编译mysql驱动的msvc2017x64版本,满足当前的特定需求,这次过程有点费劲,可能是Qt的版本低于Qt5.12,继续无保留分享出来。  本篇主要描述Qt5.9.3 msvc2017x64 + mysql8.0.16的驱动编译过程。

前言

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

  本篇主要描述Qt5.9.3 msvc2017x64 + mysql8.0.16的驱动编译过程。


编译环境

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版本问题,这里解决差不多花了大半天了去尝试、摸索然后逐步排除各种问题。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
10月前
|
安全 Linux 虚拟化
|
10月前
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
7月前
|
存储 数据可视化 测试技术
一个测试工程师的实战笔记:我是如何在Postman和Apipost之间做出选择的?
优秀的API测试工具应该具备: 分层设计:既有可视化操作,也开放代码层深度定制 场景感知:自动识别加密需求推荐处理方案 协议包容:不强迫开发者为了不同协议切换工具 数据主权:允许自主选择数据存储位置
188 7
|
8月前
|
弹性计算 Ubuntu Java
OS-Copilot-ubuntu镜像版本的具体测试使用(安装方式有单独注明)
作为一名个人开发者,我主要负责云资源的运维和管理。在使用OS Copilot的过程中,我遇到了一些配置问题,特别是在ECS实例中设置AccessKey时,但最终成功解决了。通过使用OS Copilot的-t/-f/管道功能,我大大提升了效率,减少了命令编写的工作量,特别是在搭建Java运行环境时效果显著。此外,| 功能帮助我快速理解文档,整体体验非常流畅,推荐给其他开发者使用。
190 6
|
10月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
508 3
|
10月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
453 2
|
11月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
505 1
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
407 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
467 0

推荐镜像

更多
  • qt