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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 之前特定的mysql版本msvc版本已经调通了,但是为了更好的跨平台,所以选择用mingw32版本,于是需要编译mysql驱动的mingw32版本的驱动库,以便提供给qt连接mysql使用。

前言

  之前特定的mysql版本msvc版本已经调通了,但是为了更好的跨平台,所以选择用mingw32版本,于是需要编译mysql驱动的mingw32版本的驱动库,以便提供给qt连接mysql使用。


编译环境

Qt5.9.3 mingw32

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

mysql-installer-community-8.0.16.0

  image.png

下载数据库

  https://downloads.mysql.com/archives/community/

  image.png


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

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

  image.png

  其他过程略。

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

  下载数据库运行包文件。(注意:这里要注意跟目标机器安装的版本要一致)。

  下载地址:https://downloads.mysql.com/archives/c-c

  image.png

  image.png

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

  image.png

  使用QtCreator打开:

  image.png

  注意工程的编译套件。(注意:shadow build在这里不管作用,最后是生成到根目录上去了,跟pro包含的pri配置有关

   image.png

  image.png

  image.png

步骤四:qmake并且build构建

  构建成功:

  image.png

  这里生成到磁盘根目录下去了:

  image.png

  image.png

步骤五:替换插件的mysql库

  image.png

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

  这个文件是运行库,也是需要自动手动额外copy和打包时额外拷贝的,具体看 “入坑一”。

  需要将下载下来mysql的lib下的libmysql.dll拷贝到qt的gcc的bin目录下,而且打包软件的时候也要带上。

  image.png

  如果是打包,则windeployqt不会主动拷贝,也需要手动复制过去:

  image.png

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

  编译数据库的工程:

  image.png

  Ok了,提示不再是缺少驱动了。

  下面配置好数据库,再尝试:

  image.png

步骤八:配置数据库账号允许远程操作

  这是因为账号不被允许远程登录,所以需要修改数据库用户的配置,让其允许远程登录。

  修改用户被允许远程登录,先使用mysql控制端输入密码登录,然后操作:

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

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

flush privileges;

  

  image.png

  然后成功:

  image.png

  至此,Qt5.9.3 mingw32 + mysql8.0.16数据库完成。

步骤九:数据库的远程操作工具连接

  使用远程工具测试,发现出错:

  image.png

  这是因为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;

   image.png

  image.png


入坑

入坑一:开始连通后打包后不行了,回头也不行了

问题

  开始连通后打包后不行了,回头也不行了

原因

  需要使用到libmysql.dll运行库

解决

  需要将下载下来mysql的lib下的libmysql.dll拷贝到qt的gcc的bin目录下,而且打包软件的时候也要带上。

  image.png

  如果是打包,则windeployqt不会主动拷贝,也需要手动复制过去:

  image.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
5月前
|
机器学习/深度学习 人工智能 并行计算
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
|
2月前
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
3月前
|
传感器 人工智能 JavaScript
鸿蒙开发:DevEcoTesting中的稳定性测试
DevEcoTesting主要的目的也是用于软件的测试,可以让开发者无需复杂的配置,即可一键执行测试任务,同时提供了测试报告和分析,无论是对于开发者还是测试同学来说,都是一个非常方便的工具。
117 3
鸿蒙开发:DevEcoTesting中的稳定性测试
|
2月前
|
运维 jenkins 测试技术
"还在苦等开发部署环境?3步教你用Jenkins拿回测试主动权"
测试工程师最头疼的问题是什么?依赖开发部署环境! 开发延期→测试时间被压缩→紧急上线后BUG频出→测试背锅。传统流程中,测试被动等待部署,效率低下。而Jenkins自动化部署让测试人员自主搭建环境,实现: ✅ 随时触发测试,不再苦等开发 ✅ 部署效率提升10倍,抢回测试时间 ✅ 改善团队协作,减少互相甩锅 学习Jenkins部署能力,成为高效测试工程师,告别被动等待!
|
6月前
|
数据库 Python
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
6月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4ASK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的4ASK调制解调系统的硬件测试版本,该系统包括testbench、高斯信道模块和误码率统计模块,并新增了ILA在线数据采集和VIO在线SNR设置功能。通过VIO设置不同SNR(如15dB和25dB),实现了对系统性能的实时监测与调整。4ASK是一种通过改变载波幅度表示数据的数字调制方式,适用于多种通信场景。FPGA平台的高效性和灵活性使其成为构建高性能通信系统的理想选择。
147 17
|
6月前
|
Ubuntu PHP 数据库
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
408 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
468 0

热门文章

最新文章

推荐镜像

更多