记录:Qt5.15+MinGW编译32位MYSQL8.0驱动

第零步,说明

之前写了个VS2019版本的,但是有些群友MinGW版本的没弄对,我就再记录下MinGW32版本的的编译。

第一步,安装MYSQL8.0

我是在官网下载的最新版本的*.msi安装程序,装完才发现数据库是64位,但是connector可以是32位的。此外,编译Qt MYSQL驱动需要C的connector而不是C++的。因为我Qt是32位,所以还需要装x86的C connector。

打开MYSQL installer安装管理程序,点击右侧【add】并添加C的connector组件安装上就行了。

记录:Qt5.15+MinGW编译32位MYSQL8.0驱动_第1张图片

可能有些版本没有这个C的驱动,可以自己单独下载装上:https://downloads.mysql.com/archives/c-c/

记录:Qt5.15+MinGW编译32位MYSQL8.0驱动_第2张图片

MYSQL官网链接:https://dev.mysql.com/downloads/mysql/

Qt相关文档:https://doc.qt.io/qt-5/sql-driver.html#qmysql

第二步,使用QtCreator编译MYSQL驱动插件

我先是根据Qt官网的文档使用命令行,结果发现可能我的环境变量没弄好没法用,还是参照百度上的博客用QtCreator来编译。

首先,打开源码MYSQL插件的工程(我的路径E:\Qt\qt-everywhere-src-5.15.0\qtbase\src\plugins\sqldrivers\mysql)。

然后,修改pro文件,去掉QMAKE_USE这一行,把MYSQL的C库添加进来:

#QMAKE_USE += mysql

INCLUDEPATH +="C:/Program Files (x86)/MySQL/MySQL Connector C 6.1/include"
LIBS +="C:/Program Files (x86)/MySQL/MySQL Connector C 6.1/lib/libmysql.lib"

然后构建。开始我以为没构建成功,后来发现构建出来的东西莫名其妙跑到顶层目录下了:

记录:Qt5.15+MinGW编译32位MYSQL8.0驱动_第3张图片

我们需要的就是plugins文件夹里的dll。

1.可以手动把dll放到Qt安装包目录的sqldrivers里:

记录:Qt5.15+MinGW编译32位MYSQL8.0驱动_第4张图片

 

2.也可以在构建时加上两个 make 步骤,让他自己安装到目录下(debug-install和release-install):

记录:Qt5.15+MinGW编译32位MYSQL8.0驱动_第5张图片

 

为了调试方便,我把MYSQL目录下的libmysql.dll也放到Qt安装目录的bin文件夹下:

拷贝完这两个就可以开始测试了。

参照博客:https://www.cnblogs.com/szitcast/p/11105899.html

参照博客:https://www.cnblogs.com/forsee/p/11963832.html

第三步,测试

新建Qt工程,pro里加上sql模块:

QT += sql

然后随便加几句测试代码:

#include 
#include 
#include 
#include 

void test_mysql()
{
    qDebug()<

第一次运行可能会出错,lastError()显示(QSqlError("2059", "QMYSQL: Unable to connect", "Authentication plugin 'caching_sha2_password' cannot be loaded"))。经查是MYSQL8.0改变了加密规则,MYSQL8.0之前的版本中加密规则是mysql_native_password,而在MYSQL8.0之后,加密规则是caching_sha2_password。

这里我选择把用户登陆密码规则设置为mysql_native_password。

打开MYSQL的命令行工具(MySql 8.0 Command Line Client),执行:

use mysql;
alter user 'root'@'localhost' identified with mysql_native_password by '密码';

记录:Qt5.15+MinGW编译32位MYSQL8.0驱动_第6张图片

再次运行我们的测试代码:

大功告成!!!

参考博客:https://msd.misuland.com/pd/3255818100674662202

你可能感兴趣的:(Qt,略知一二,Qt,MYSQL,MinGW)