1. 程式人生 > 其它 >QT:MYSQL driver not loaded解決方法

QT:MYSQL driver not loaded解決方法

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執行資料庫相關操作:

  1. 轉到QT安裝目錄下MSVC2017執行環境的資料夾下,比如在我的電腦上是E:\Qt\5.14.2\msvc2017_64
  2. 進入plugins\sqldrivers目錄下,所以Driver所在的完整目錄是E:\Qt\5.14.2\msvc2017_64\plugins\sqldrivers
  3. 檢查這個資料夾下是否有qsqlmysql.dllqsqlmysqld.dll兩個檔案,就像下邊這樣
  4. 如果沒有這兩個檔案,就說明缺少MySQL driver。

1.2、是否缺少MySQL相關庫?

檢查E:\Qt\5.14.2\msvc2017_64\lib目錄下,看是否有libmysql.dlllibmysql.lib兩個檔案,如果沒有,就說明缺少MySQL相關庫。

2、解決方法

2.1、缺少MySQL相關庫:libmysql.dll
libmysql.lib

  1. 下載MySQL(注意32位、64位一定要正確),轉到下載好的MySQL目錄下的lib目錄中:D:\MySQL\lib
  2. 找到libmysql.dlllibmysql.lib兩個檔案,複製貼上到1.2中所說的目錄E:\Qt\5.14.2\msvc2017_64\lib目錄下,即可解決。

2.2、缺少MySQL Driver:qsqlmysql.dll qsqlmysqld.dll

這個解決比較複雜,大家出問題也主要是這個問題。

  1. 轉到Qt目錄下的 "E:\Qt\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql"目錄中,大概長下邊這樣:
  2. 在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)
  3. 修改這個專案檔案,新增三句話、註釋一句話:
    INCLUDEPATH += "D:\MySQL\include"
    LIBS+="D:\MySQL\lib\libmysql.lib"
    DESTDIR = ../mysql/lib
    #QMAKE_USE += mysql

    其中第一行中的路徑,就是MySQL中include目錄的路徑;第二行中的路徑,就是2.1中所說的MySQL庫的路徑;第三行是輸出driver到哪個資料夾下;

  4. 專案中取消勾選Shadow build
  5. 構建專案
  6. 之後就可以在lib目錄(E:\Qt\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql\lib)下找到驅動檔案qsqlmysql.dllqsqlmysqld.dll

  7. 把這兩個檔案複製到1.1中所說的目錄E:\Qt\5.14.2\msvc2017_64\plugins\sqldrivers下;
  8. 完事!