当前位置: 首页 > news >正文

qt5.14.2连mysql8.0

qt5.14.2连mysql8.0

Qt 5.14.2 默认不提供预编译的 MySQL 驱动,直接连接 MySQL 8.0 通常会报错 QMYSQL driver not loaded。核心解决方案是手动编译驱动并解决 MySQL 8.0 的新身份验证协议问题。

一、环境准备与验证
1.版本对齐:确保 Qt 编译器(MinGW/MSVC)与 MySQL Server 8.0 的位数一致(推荐均为 64 位)。
2.安装源码:Qt 安装时必须勾选 Source组件,否则无法编译驱动

二、手动编译 MySQL 驱动(Windows 示例)
1.定位源码:进入 Qt 源码目录
Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
2.修改 mysql.pro文件:
用 Qt Creator 打开 mysql.pro,注释原配置并添加你的 MySQL 8.0 路径(路径中不要有空格或中文)。

pro
TARGET = qsqlmysql# 注释掉这一行
# QMAKE_USE += mysqlHEADERS += $PWD/qsql_mysql_p.h
SOURCES += $PWD/qsql_mysql.cpp $PWD/main.cpp# 添加你的 MySQL 8.0 路径(请根据实际安装路径修改)
INCLUDEPATH += "C:/MySQL/ProgramFiles/MySQLServer8.0/include"
LIBS += "C:/MySQL/ProgramFiles/MySQLServer8.0/lib/libmysql.lib"OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

3.编译生成:
使用与你的 Qt 环境匹配的 Kit(如 Desktop Qt 5.14.2 MinGW 64-bit)构
建项目。
编译成功后,会在 plugins\sqldrivers或 lib目录下生成 qsqlmysql.dll等
文件。
4.部署驱动文件:
将生成的 qsqlmysql.dll(Release版)和 qsqlmysqld.dll(Debug版)复
制到:
Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers
将 MySQL 8.0 的 libmysql.dll(位于 MySQL 的 bin或 lib目录)复制到:
Qt\Qt5.14.2\5.14.2\mingw73_64\bin

三、代码连接与 MySQL 8.0 认证修复
1.基础连接代码:
在 .pro文件中添加 QT += sql,然后使用以下代码测试

cpp
#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");     // 或你的服务器IP
db.setPort(3306);
db.setDatabaseName("your_database");
db.setUserName("root");
db.setPassword("your_password");if (!db.open()) {qDebug() << "Connection error:" << db.lastError().text();
} else {qDebug() << "Connected!";
}

2.解决 MySQL 8.0 认证协议错误:
如果报错 "Client does not support authentication protocol requested by server",说明 MySQL 8.0 默认的 caching_sha2_password加密方式
Qt5.14 不支持。
解决方案(二选一):
推荐:修改用户密码插件(在 MySQL 命令行中执行):

sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
FLUSH PRIVILEGES;
备用:在 my.ini中强制降级默认认证方式(不推荐用于生产环境):
ini
[mysqld]
default_authentication_plugin=mysql_native_password
http://www.jsqmd.com/news/799349/

相关文章:

  • ARM926EJ-S指令缓存架构与调试技术详解
  • C# 绘制直线 圆形 矩形(工业上位机)
  • 【数学建模】雾霾问题的建模和仿真分析的MATLAB代码
  • 文献阅读 260511-Wildfire damages and the cost-effective role of forest fuel treatments
  • 基于MCP协议实现AI助手个性化:Terminal Buddies项目实战解析
  • 【计算机毕业设计】基于Springboot的医院后台管理系统设计与实现+LW
  • 小白也能上手!OpenClaw 2.6.4 Windows 一键部署本地 AI 智能体
  • NCCL watchdog timeout 先别只会加 timeout:PyTorch 新出的 Flight Recorder,真正值钱的是能把第一处 collective 分歧揪出来
  • 时序数据库查询新思路:用InfluxDB的SELECT、LIMIT、OFFSET玩转IoT设备历史数据分页
  • 工厂6S搞了没效果?精益生产6S红牌作战实操,30天打造标杆车间!
  • C++ Modbus通信中Long与Float数据解析的字节序处理实战
  • 大一蓝桥杯。卡片
  • MyBili更新至v1.3.0:越来越像“真正适合电视”的B站客户端了
  • 从立体角到坎德拉:揭秘发光强度的核心计算与工程权衡
  • 5大核心功能揭秘:GTA5线上小助手如何彻底改变你的洛圣都冒险体验
  • Swarmocracy:基于蜂群智能的分布式组织决策模拟实践
  • 用PyTorch从零实现REINFORCE算法:一个完整的离散与连续动作空间实战教程
  • shot2:从截图到智能监控,构建自动化视觉信息采集引擎
  • OpenClaw Hooks 模块深度解析 — 双层事件驱动架构
  • Apache Spark:大数据处理的极速引擎与PySpark实战指南
  • 构建现代化图片编辑器的Vue与Fabric.js实践指南
  • Kling AI 技术全解:从底层架构到多模态生成原理
  • 基于椭圆曲线的 Harness 请求签名与验签
  • 【油浸式变压器】在不同气候条件下的油浸式变压器的能量极限研究(Matlab代码实现)
  • 上古卷轴5天际整合包下载最新全热门MOD整合(画质+人物+功能+场景全美化)下载分享
  • GDScript Mod Loader:为Godot游戏打造专业模组生态的完整指南
  • 大模型岗位深度解析:小白程序员转型指南与收藏必备!
  • Arknights-Mower技术架构解析与效能优化实践
  • 5分钟彻底解决Windows软件DLL缺失问题:VisualCppRedist AIO完整修复方案
  • hive函数的解析及练习