【问题记录】解决Qt连接MySQL报“QMYSQL driver not loaded”以及不支持MySQL事务操作的问题!

环境

  • Windows 11 家庭中文版,64 位操作系统, 基于 x64 的处理器
  • Qt 5.15.2 MinGW 32-bit
  • mysql Ver 14.14 Distrib 5.7.42, for Win32 (AMD64)

问题情况

  1. 在Qt 5.15.2 中编写连接MySQL数据库代码后,使用 MinGW 32-bit 构建套件进行编译运行后,报了 "QMYSQL driver not loaded" 错误!
  2. 工作中也还遇到了在 Qt 5.15.2 中操作MySql数据库不能开启事务操作的问题!判断是否支持MySQL事务操作的语句如下:
    1. m_db.driver()->hasFeature(QSqlDriver::DriverFeature::Transactions);

问题分析

问题一

  1. Qt连接MySQL报 "QMYSQL driver not loaded" 错误很明显就是MySQL驱动的问题。
  2. 之前在 Qt 5.9.6 中也遇到了驱动未加载的问题,在按该文章 【问题记录】Qt连接MySQL报 QMYSQL driver not loaded 错误!进行操作时,还是不能解决,因为使用的Qt版本不同,所以对MySQL的驱动要求也会有所改变。

问题二

  1. Qt 5.15.2 应该支持MySQL数据库的事务操作,但具体的支持取决于所使用的数据库驱动程序和数据库引擎。
  2. 以下是一些可能的原因,导致在 Qt 5.15.2 中无法对MySQL数据库进行事务操作的情况:
    1. 使用不支持事务的数据库引擎:某些数据库引擎(例如MySQL的MyISAM)不支持事务操作。如果在这些引擎上创建表格,那么无论您使用什么版本的Qt,都无法进行事务操作。确保使用的是支持事务的数据库引擎,如InnoDB。
    2. 使用不正确的数据库驱动程序:Qt 使用不同的数据库驱动程序来连接到各种数据库。如果使用的数据库驱动程序不正确或不支持事务操作,就可能会遇到问题。使用确保选择了适当的数据库驱动程序,如QMYSQL。
    3. Qt 编译问题:在某些情况下,Qt 库可能未正确编译或配置以支持数据库的事务操作。确保使用的 Qt 5.15.2 版本已经正确构建并包括 SQL 模块。

总结

  1. 根据上面的情况进行分析,可以肯定这类问题的解决办法得从MySQL驱动上进行下手,但MySQL官网提供的最新驱动已经在2017年就停止更新了并且不支持当前Qt 5.15.2版本了。
  2. 所以还是得自己来根据 "Qt源码的MySQL源码部分" 和 已经安装好的MySQL来生成适用于当前Qt版本的MySQL驱动程序。

解决办法

前提条件

  1. 在安装Qt的时候记得勾选Qt源码。
  2. MySQL的安装位数要和Qt的构建套件位数一致(比如Qt使用的是MinGW 32-bit,那MySQL安装位数也必须位32位)。

编译Qt 的MySQL源码生成MySQL驱动程序

  1. 将 D:\Software\IT\MySQL\mysql-5.7.42-win32\lib 目录下的 libmysql.dll 和 libmysql.lib 库文件拷贝到 MinGW 32-bit 编译套件的bin目录下。
  2. 找到MySQL源码所在路径(本人:D:\Software\IT\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql),然后双击mysql目录下的 mysql.pro 文件,在Qt Creator中选择 MinGW 32-bit 编译套件。
  3. 打开 mysql.pro 文件,进行如下的编辑:
  4. 点击Qt Creator界面左下角的小锤子来构建当前mysql源码。
  5. 然后会在D:\Software\IT\Qt\5.15.2\mingw81_32\plugins\sqldrivers目录下生成如下几个文件。
  6. 最后运行下测试MySQL驱动的例子,问题终于解决了!!!
相关推荐
一只鹿鹿鹿1 小时前
政务外网整体设计方案(PPT)
大数据·数据库·web安全·系统安全·流程图·政务
2603_965148112 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
for_ever_love__2 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
AI砖家2 小时前
安全进入 Agent Loop:2027 年 Coding Agent 的决胜点
数据库·安全·codex·vibecoding
wangqiaowq2 小时前
SQL server C盘空间占满的处理
数据库·sql
文人sec2 小时前
SQL基础入门笔记 | 从零基础到掌握核心查询语句
数据库·笔记·sql
数字新视界2 小时前
机房动环监控提升运维效率
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
SelectDB技术团队2 小时前
冷热分层从建到验:Storage Policy 创建、表级与分区级绑定、SHOW TABLETS 验证的完整命令
大数据·数据库·elasticsearch·搜索引擎·数据分析·apache doris·冷热分层
lambo mercy4 小时前
Day3:结构化输出
java·数据库·oracle
派小心.4 小时前
小程序分享链路中来源参数的传递校验
大数据·前端·数据库·人工智能·小程序·数据分析