一、问题描述
qt6+ 版本默认不预装 QMYSQL 驱动文件,导致qt应用连接MySQL数据库时报错:
“qt.sql.qsqldatabase: QSqlDatabase: can not load requested driver ‘QMYSQL’, available drivers: QIBASE QSQLITE QMIMER QOCI QODBC QPSQL”
问题排查:
1.检查qt安装路径:C:\Qt\6.9.3\mingw_64\bin (以你的实际安装路径为准),是否存在libmysql.dll和libmysql.lib
2.检查路径C:\Qt\6.9.3\mingw_64\plugins\sqldrivers,是否存在qsqlmysql.debug和qsqlmysql.dll文件
二、问题解决
(一)、拷贝libmysql.dll和libmysql.lib
① 确保你已经安装了 MySQL
② 在本机 MySQL 的安装路径下查找:C:\Program Files\MySQL\MySQL Server 8.0\lib
将libmysql.dll和libmysql.lib复制到 C:\Qt\6.9.3\mingw_64\bin
(二)、生成qsqlmysql.debug和qsqlmysql.dll
① 在本地找个风水宝地,确认路径无中文,新建文件夹(D:\qt-mysql-driver),为了后续生成文件做准备;
将 C:\Program Files\MySQL\MySQL Server 8.0 中的lib文件夹和include文件夹复制到 D:\qt-mysql-driver
② 找到 C:\Qt\6.9.3\Src\qtbase\src\plugins\sqldrivers ,用qt打开(如果没有Src文件夹,见下文第三大点)
将sqldrivers 文件夹下所有文件选中,点击打开
③ 第一次打开会进入这个界面,点击构建,等待运行
④ 运行完毕点击左侧边菜单栏 “编辑”,看到如下结构
⑤ 打开.cmake.conf,加入如下 “神秘小代码”
还记得刚刚新建的文件夹吗? 第 二、 (二) 、① 步
SET(FEATURE_sql_mysql ON)SET(MySQL_INCLUDE_DIR"D:/qt-mysql-driver/include")# MySQL 的头文件路径SET(MySQL_LIBRARY"D:/qt-mysql-driver/lib/libmysql.lib")# MySQL 的库文件保存后点击这个锤子进行编译
⑥ 找到这个build文件夹,找到路径:C:\Qt\6.9.3\Src\qtbase\src\plugins\sqldrivers\build\Desktop_Qt_6_9_3_MinGW_64_bit-Debug\plugins\sqldrivers 中的qsqlmysql.debug和qsqlmysql.dll
将这两个文件复制到路径: C:\Qt\6.9.3\mingw_64\plugins\sqldrivers 下即可
运行效果:
日志:qt.sql.mysql: QMYSQLDriver::open: Illegal connect option value ‘CHARSET=utf8mb4’
三、缺少Src文件夹的问题
① 打开 maintenance tool
② 登录 → 选择"添加或移除组件 " (add or remote …)
找到自己版本的qt, 选中所属的sources ,点下一步进行安装即可,安装完继续上述配置步骤
四、参考博客
① 作者 : m0_50696579 文章 : <<Windows11下背景下的Qt6连接MySQL驱动>>