身为JAVA开发工程师,项目需求开整QT做前端。遇到QMYSQL driver not loaded问题。感觉版本的问题是遇到开发编译过程中最多的。再此做以记录》》
但凡出现:QMYSQL driver not loaded还是未加载QT5core.dll,以及debug编译正常还是release编译运行报错,亦或是未找到.cpp文件。
起初处理QMYSQL driver not loaded时,QT版本是V5.14.1,显示缺少QTmysql 驱动。故此单独下载给配置后,该问题正常,但是又诱发了未加载QT5core.dll问题。核查后是QT的MySQL库文件用的版本不一致。当然,该问题也会诱发debug编译正常还是release编译运行报错。
所以针对QMYSQL driver not loaded问题的正确解决很关键。(使用QT连接MySQL的过程中出现:QSqlDatabase: QMYSQL driver not loaded、QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7、Sql connect failed、"Driver not loaded Driver not loaded"。)
原因:项目里面没有QMySQL的驱动导致的
解决方案:
1.在QT安装目录下导入或打开mysql.pro:F:\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql

2.修改配置文件mysql.pro和qsqldriverbase.pri
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)
#mysql安装目录下
INCLUDEPATH+="D:\Program Files\mysql-5.7.35-winx64\include"
LIBS+="D:\Program Files\mysql-5.7.35-winx64\lib\libmysql.lib"
#构建生成对应版本的MySQL配置文件存放位置
DESTDIR="D:\Program Files\mysql-5.7.35-winx64\lib\abc"
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
清理后重新构建即可:

生成的dll如下:

而后将生成的dll全部拷贝到:
F:\Qt5.14.1\5.14.1\msvc2017_64\plugins\sqldrivers

完成后运行重新构建工程即可。
如果出现如下问题则查看处理如下:
1)打开mysql.h文件失败,则查看参数mysql.pro配置路径是否正确或者是否有加“”。
2)出现:LNK1181: 无法打开输入文件“
D:\Program Files\mysql-5.7.35-winx64\lib.obj
a) 关闭QT中其他项目保证只有一个mysql依赖生成项目
b) 清除项目,进行重新构建,实在不行先清除项目-》关闭项目-》打开重新构建
3) Library 'mysql' is not defined 找不到mysql,注释掉 #QMAKE_USE += mysql
本文讲述了JAVA开发工程师在使用QT5.14.1作为前端时遇到的QMYSQLdriver未加载问题,涉及版本不一致、配置调整及常见错误排查,提供了解决步骤和注意事项。
8633

被折叠的 条评论
为什么被折叠?



