前言
QT5.13版本后无法使用Mysql。
一、Mysql缺少报错
1.在QT中使用
1 |
db = QSqlDatabase::addDatabase("QMYSQL");//加入mysql数据库 |
2.然后会报以下错误:
1 |
QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7 |
3.查看D:\Software\QT\5.14.2\mingw73_64\plugins\sqldrivers目录下(根据自己QT的安装目录修改)
注:如果没有qsqlmysql.dll文件,则说明需要自己编译源码中Mysql模块来生成qsqlmysql.dll。然后将其放到该目录下,则才可以继续使用Mysql。
二、源码中编译Mysql生成qsqlmysql.dll
1.源码准备,如果在以前安装过程中没有选择安装源码,则可以在重新安装选择安装源码,只要与原安装不在一个目录即可,然后用完卸载,至少我是这样做的。
2.然后在目录C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers(根据自己安装目录修改)下可以找到如下图的文件夹:
3.打开mysql文件,点击mysql.pro进行配置:
4.修改mysql.pro
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
include(C:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/configure.pri) 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) #电脑中Mysql软件的安装目录 mysql5.5/,需要更改为自己电脑的Mysql安装目录 win32: LIBS += -LD:/Software/database/mysql5.5/lib/ -llibmysql INCLUDEPATH += D:/Software/database/mysql5.5/include DEPENDPATH += D:/Software/database/mysql5.5/include |
5.注意点击编译后生成的文件可能会在安装QT源码时选择的顶级目录下,我的是在C盘目录下找到。
6.将其拷贝到D:\Software\QT\5.14.2\mingw73_64\plugins\sqldrivers中。就可以正确的在QT中使用Mysql了
==========================================
我修改的mysql.pro文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
include(D:/Qt/qt-everywhere-src-5.15.2/qtbase/src/plugins/sqldrivers/configure.pri) 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 += $$quote(D:/Program Files/mysql-8.0.20-winx64/lib/libmysql.lib) INCLUDEPATH += $$quote(D:/Program Files/mysql-8.0.20-winx64/include) |
我修改的../qsqldriverbase.pri文件:
1 2 3 4 5 6 7 8 9 |
QT = core core-private sql-private # For QMAKE_USE in the parent projects. #include($$shadowed($$PWD)/qtsqldrivers-config.pri) PLUGIN_TYPE = sqldrivers load(qt_plugin) DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII |
发表评论
要发表评论,您必须先登录。