0、參考(按對本人幫助從高到低排列)
Qt5.14.1 如何編譯和使用mysql和mariadb數據庫驅動
(15條消息) QMYSQL driver not loaded 的原理和解決辦法_m15814478834的專欄-CSDN博客
(15條消息) 關於windows下Qt報告“QMYSQL driver not loaded”的解決辦法_ac_blood的博客-CSDN博客
1、原因
缺少MySQL數據庫驅動(即Driver)或MySQL相關庫
1.1、是否缺少Driver?
假設我們要用MSVC2017運行數據庫相關操作:
- 轉到QT安裝目錄下MSVC2017運行環境的文件夾下,比如在我的電腦上是E:\Qt\5.14.2\msvc2017_64;
- 進入plugins\sqldrivers目錄下,所以Driver所在的完整目錄是E:\Qt\5.14.2\msvc2017_64\plugins\sqldrivers;
- 檢查這個文件夾下是否有 qsqlmysql.dll 與 qsqlmysqld.dll兩個文件,就像下邊這樣
-
如果沒有這兩個文件,就說明缺少MySQL driver。
1.2、是否缺少MySQL相關庫?
檢查E:\Qt\5.14.2\msvc2017_64\lib目錄下,看是否有libmysql.dll與libmysql.lib兩個文件,如果沒有,就說明缺少MySQL相關庫。
2、解決方法
2.1、缺少MySQL相關庫:libmysql.dll 與 libmysql.lib
- 下載MySQL(注意32位、64位一定要正確),轉到下載好的MySQL目錄下的lib目錄中:D:\MySQL\lib;
- 找到libmysql.dll與libmysql.lib兩個文件,復制粘貼到1.2中所說的目錄E:\Qt\5.14.2\msvc2017_64\lib目錄下,即可解決。
2.2、缺少MySQL Driver:qsqlmysql.dll 與 qsqlmysqld.dll
這個解決比較復雜,大家出問題也主要是這個問題。
- 轉到Qt目錄下的 "E:\Qt\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql"目錄中,大概長下邊這樣:
- 在Qt Creator中打開該目錄下的mysql.pro,相當於打開這個mysql項目,進入mysql.pro下:
#mysql.pro TARGET = qsqlmysql HEADERS += $$PWD/qsql_mysql_p.h SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp PLUGIN_CLASS_NAME = QMYSQLDriverPlugin OTHER_FILES += mysql.json QMAKE_USE += mysql include(../qsqldriverbase.pri)
- 修改這個項目文件,添加三句話、注釋一句話:
INCLUDEPATH += "D:\MySQL\include" LIBS+="D:\MySQL\lib\libmysql.lib" DESTDIR = ../mysql/lib
#QMAKE_USE += mysql其中第一行中的路徑,就是MySQL中include目錄的路徑;第二行中的路徑,就是2.1中所說的MySQL庫的路徑;第三行是輸出driver到哪個文件夾下;
- 在項目中取消勾選Shadow build:
- 構建項目
-
之后就可以在lib目錄(E:\Qt\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql\lib)下找到驅動文件qsqlmysql.dll 與 qsqlmysqld.dll;
- 把這兩個文件復制到1.1中所說的目錄E:\Qt\5.14.2\msvc2017_64\plugins\sqldrivers下;
- 完事!