前言

  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

  

下载数据库

 

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

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

  1. 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入

    文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...

  2. navicat for mysql ,mysql版本是8.0的版本,连接数据库报错1251,解决办法。

    我的mysql版本是8.0的版本,因为毕竟新的mysql采用新的保密方式,所以就的似乎不能用,改密码方式: 用管理员身份打开cmd mysql -uroot -p(输入密码)            进 ...

  3. Qt+MPlayer音乐播放器开发笔记(一):ubuntu上编译MPlayer以及Demo演示

    前言   在ubuntu上实现MPlayer播放器播放音乐.   Demo                Mplayer   MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布.此款软件 ...

  4. Qt+ECharts开发笔记(四):ECharts的饼图介绍、基础使用和Qt封装百分比图Demo

    前言   前一篇介绍了横向柱图图.本篇将介绍基础饼图使用,并将其封装一层Qt.  本篇的demo使用隐藏js代码的方式,实现了一个饼图的基本交互方式,并预留了Qt模块对外的基础接口.   Demo演示 ...

  5. Hi3516开发笔记(四):Hi3516虚拟机编译uboot、kernel、roofts和userdata以及分区表

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/121572767红胖子(红模仿)的博文大全:开发技术集合( ...

  6. windows一机多装mysql,5.5+版本,8.0.11版本

      00.安装第一个mysql,压缩版或者安装版,过程省略,目录如下: 运行中输入“regedit” 进入后,找到      HKEY_LOCAL_MACHINE\SYSTEM\CurrentCont ...

  7. Qt+ECharts开发笔记(三):ECharts的柱状图介绍、基础使用和Qt封装Demo

    前言   上一篇成功是EChart随着Qt窗口变化而变化,本篇将开始正式介绍柱状图介绍.基础使用,并将其封装一层Qt.  本篇的demo实现了隐藏js代码的方式,实现了一个条形图的基本交互方式,即Qt ...

  8. Qt+ECharts开发笔记(二):Qt窗口动态调整大小,使ECharts跟随Qt窗口大小变换而变换大小

    前言   上一篇将ECharts嵌入Qt中,在开始ECharts使用之前,还有一个很重要的功能,就是在窗口变换大小的时候,ECharts的图表尺寸也要跟随Qt窗口变换大小而变换大小.   Demo演示 ...

  9. Qt+ECharts开发笔记(五):ECharts的动态排序柱状图介绍、基础使用和Qt封装Demo

    前言   上一篇的demo使用隐藏js代码的方式,实现了一个饼图的基本交互方式,并预留了Qt模块对外的基础接口.  本篇的demo实现了自动排序的柱状图,实现了一个自动排序柱状图的基本交互方式,即Qt ...

  10. 《ArcGIS Runtime SDK for Android开发笔记》——(15)、要素绘制Drawtools3.0工具DEMO

    1.前言 移动GIS项目开发中点线面的要素绘制及编辑是最常用的操作,在ArcGIS Runtime SDK for iOS 自带AGSSketchLayer类可以帮助用户快速实现要素的绘制,图形编辑. ...

随机推荐

  1. 关于JSP无法使用静态引用的问题案例

    问题描述: 在写项目时,对于头部信息,尾部信息,分页信息等出现频率高,又很雷同的部分进行抽取时,使用到了jsp的静态引用功能,但之前我每次使用,都会导致程序报错,甚至出现tomcat无法正常启动的情况 ...

  2. 用VUE框架开发的准备

    使用VUE框架编写项目的准备工作 防止我几天不打代码,忘记怎么打了 下载小乌龟拉取码云项目文件,用于码云仓库代码提交与拉取(可以不安装) 小乌龟要设置你的码云账号 密码 在控制面版 中 凭证里可以修改 ...

  3. Python:合并两个列表成为一个list

    如何合并两个列表,今天就来探讨一下: 方法一:最笨的方法实现 list1=[1,2,3]list2=[4,5,6]new_list=[]for item in list1: new_list.appe ...

  4. Python 3 os.walk读取指定文件路径后,打印路径参数为空

    今天有时间自己尝试了一下os.walk的小实验,结果出现了一个小问题:在交互模式下,运行我的python脚本,没有打印任何内容 返回去看一下test.py内容 返回去看一下文件路径是否正确: 看着好像 ...

  5. PHP 错误设置

    错误显示设置 设置:那些错误该显示,以及该如何显示 在PHP中,有两种方式来设置当前脚本的错误处理 1.PHP配置文件--php.ini 修改配合文件需要重启服务 display_error:是否显示 ...

  6. Echarts的安装和使用

    安装步骤 下载相关文件 可以在该网站下载Echarts.js文件,网址在此:https://www.echartsjs.com/zh/builder.html 然后选择号自己需要用到的图形模块,点击下 ...

  7. Java Swing的练习感悟

    感悟心得 这还是我第一次使用Java Swing写代码呢,直接就是趣味性拉满! 在相关的界面代码的基础上,在必要的位置嵌入Java代码,就可以很好的实现啦! 简单的嘞! (有兴趣的各位可以选择去浅浅地 ...

  8. 用户地址管理---新增、设置默认地址、根据id查询所有地址、查询默认地址、查询指定用户的全部地址

    导入用户地址簿相关功能代码 需求分析: 地址簿,指的是移动端消费者用户的地址信息,用户登录成功后可以维护自己的地址信息.同一个用户可以有多个地址信息,但是只能有一个默认地址. 用户的地址信息会存储在a ...

  9. springboot--配置格式文件

    修改端口号的三种方法 1.server.port = 80 2.新建application.yml文件. 3.新建application.yaml文件. 配置文件加载顺序: 当三个文件都存在时prop ...

  10. Python的安装与配置(图文教程)

    安装Python 想要进行Python开发,首先需要下载和配置Python解释器. 下载Python 访问Python官网: https://www.python.org/ 点击downloads按钮 ...