一、问题
本地开发环境:
- 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目录下的 include
和 lib
文件夹至 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.dll
和 qsalmysald.dll
如下:
步骤三
将生成的 qsqlmysql.dll
和 qsalmysald.dll
拷贝到 D:\Qt\Qt5.12.12\5.12.12\mingw73_32\plugins\sqldrivers
如下:
将 C:\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL
中的 libmysql.dll
和 libmariadb.dll
拷贝到 D:\Qt\Qt5.12.12\5.12.12\mingw73_32\bin
如下:
步骤四
重启Qt Creator,运行程序,可以连上 mysql 数据库了: