Qt5.12 QSqlDatabase: QMYSQL driver not loaded

文章详细介绍了在Win10环境下,使用Qt5.12.12和QtCreator5.0.2时遇到的QMYSQL驱动未加载问题的解决方案。通过拷贝MariaDB的include和lib文件到Qt相应目录,修改配置文件并重新编译,然后将生成的dll文件拷贝到正确位置,最终成功连接到MySQL数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题

本地开发环境:

  • win 10
  • Qt 5.12.12
  • Qt Creator 5.0.2 Based on Qt 5.12.2 (MSVC 2019, 64 bit)
  • Desktop Qt 5.12.12 MinGW 32-bit

Qt连接 mysql 数据库(除了QMYSQL,还支持QSQLITE、QMYSQL3、QODBC、QODBC3、QPSQL、QPSQL7):
在这里插入图片描述
运行程序时报 QSqlDatabase: QMYSQL driver not loaded
在这里插入图片描述

二、解决办法

我的Qt安装目录:D:\Qt\Qt5.12.12\

我的MariaDB安装目录:D:\Program Files (x86)\MariaDB 10.2

步骤一

拷贝 MariaDB目录下的 includelib 文件夹至 D:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql 文件夹下:
在这里插入图片描述
在这里插入图片描述

步骤二

打开目录 D:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql 下的 mysql.pro ,修改 mysql.pro 如下:

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

# 注释下面一行
#QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

# 增加下面几行
LIBS += -L$$PWD/lib -llibmariadb
INCLUDEPATH += $$PWD/include $$PWD/include/mysql
DEPENDPATH += $$PWD/lib
DESTDIR = ../mysql/libmysql

在这里插入图片描述

修改 mysql 项目中的 qsqldriverbase.pri 如下:

QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
# 注释下面一行
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
# 增加下面一行
include(./configure.pri)

PLUGIN_TYPE = sqldrivers
load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

在这里插入图片描述
编译后会在 D:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql\libmysql 目录下生成 qsqlmysql.dllqsalmysald.dll 如下:
在这里插入图片描述

步骤三

将生成的 qsqlmysql.dllqsalmysald.dll 拷贝到 D:\Qt\Qt5.12.12\5.12.12\mingw73_32\plugins\sqldrivers 如下:
在这里插入图片描述
C:\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL 中的 libmysql.dlllibmariadb.dll 拷贝到 D:\Qt\Qt5.12.12\5.12.12\mingw73_32\bin 如下:

在这里插入图片描述
在这里插入图片描述

步骤四

重启Qt Creator,运行程序,可以连上 mysql 数据库了:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值