软件环境:Qt5.13.1 + MySQL8.0.18 x64
MySQL 8.0.18 安装时安装了选择了Devlopment 环境。
连接数据库错误如下:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
由于Qt5.13 默认没有mysql 的驱动文件。
ubuntu 平台安装mysql plugin:
apt install libqt5sql5-mysql
centos 平台安装mysql plugin:
yum install qt5-qtbase-mysql
windows 平台需要自已编译。
具体步骤如下:
Qt5.13.1 安装时选上src,因为要自已编译mysql plugins
用QtCreate 打开 C:\Qt\Qt5.13.1\5.13.1\Src\qtbase\src\plugins\sqldrivers\mysql\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)
INCLUDEPATH += "C:/Program Files/MySQL/MySQL Server 8.0/include"
LIBS += "C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"
之后编译,编译成功后会在C盘生成 C:\plugins\sqldrivers 和 C:\mkspecs目录,将C:\plugins\sqldrivers目录下的libqsqlmysql.a libqsqlmysqld.a qsqlmysql.dll qsqlmysqld.dll文件复制到 C:\Qt\Qt5.13.1\5.13.1\mingw73_64\plugins\sqldrivers (Qt安装时我选的编译工具为mingw)
将C:\mkspecs目录下的文件复制到C:\Qt\Qt5.13.1\5.13.1\mingw73_64\mkspecs
从C:\Program Files\MySQL\MySQL Server 8.0\lib 复制 libmysql.dll 到C:\Qt\Qt5.13.1\5.13.1\mingw73_64\bin 目录下,不然会提示 Driver not load
参考:
https://dev.to/f1r361rd/how-i-build-a-mysql-plugin-for-qt5-windows-mingw32-2kim
https://www.cnblogs.com/forsee/p/11963832.html
https://blog.csdn.net/cmdn669/article/details/100149825
https://forum.qt.io/topic/109866/qt5-mysql-plugin-on-ubuntu-18-04-not-working