身为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