1. 程式人生 > >Qt5 MySql驅動問題(qt和mysql各種小白問題親測解決,若有相關問題可留言交流)

Qt5 MySql驅動問題(qt和mysql各種小白問題親測解決,若有相關問題可留言交流)

原文:http://blog.csdn.net/yy64578537/article/details/71006042
QT5雖然自帶mysql驅動,不再需要像QT4那樣自己進行編譯。但是QT對mysql總歸不是那麼友好,在連線過程中,遇到了一坨又一坨的問題,參考了一坨又一坨的資料,用了將近一整天的時間,終於搞定了。直接上乾貨:
照著QT官方文件提供的方法(按F1),進行mysql資料庫的連線:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");  
db.setHostName("...");  
db.setDatabaseName("..."
); db.setUserName("..."); db.setPassword("..."); bool ok = db.open(); if(ok){ qDebug()<<"成功連線資料庫"; }else{ QMessageBox::warning(NULL,"警告","無法連線資料庫"); }

“else”本來就想著意思意思,信心滿滿地等待著後臺輸出”成功連線資料庫”,結果卻被QT無情澆了一盆冷水:
這裡寫圖片描述
嗯,很痛苦,再看後臺輸出,如下:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
翻譯一下,意思大概就是:“QMYSQL驅動載入失敗”,“可用驅動有:QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL7”。
明明可用驅動中包含QMYSQL,為什麼會提示載入失敗呢?查看了一坨資料,總結了一下,應該是缺了載入mysql驅動時所需要的一些東西,導致載入失敗。
根據網上提供的方法:將mysql安裝目錄中的libmysql.dll檔案拷貝到QT安裝目錄下的bin目錄中就可以了:
這裡寫圖片描述

如上圖拷貝後,繼續在QT中執行原始檔,結果還是會報一模一樣的錯誤:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
然後又試了N種方法,錯誤依舊。把電腦砸了的心都有了~~
冷靜過後,嘗試手動載入mysql驅動,QT mysql驅動在“F:\QT\5.5\mingw492_32\plugins\sqldrivers”目錄下(找到自己對應的目錄就好了),在主函式中新增如下程式碼,嘗試手動載入:

#include <QPluginLoader>  
void loadMySqlDriver(); int main(int argc, char *argv[]) { QApplication a(argc, argv); loadMySqlDriver(); MainWindow w; w.show(); return a.exec(); } void loadMySqlDriver() { QPluginLoader loader; // MySQL 驅動外掛的路徑 loader.setFileName("F:/QT/5.5/mingw492_32/plugins/sqldrivers/qsqlmysqld.dll"); qDebug() << loader.load(); qDebug() << loader.errorString(); }

執行,後臺輸出如下:
false
“Cannot load library F:/QT/5.5/mingw492_32/plugins/sqldrivers/qsqlmysqld.dll: %1 不是有效的 Win32 應用程式。”
提示無法載入,%1後面的東西是什麼玩意??不是有效的Win32應用程式???難道是我32位的QT和64位的mysql起了衝突??難道QT自帶驅動只能針對mysql32位的,而不能連64位的mysql??迫不及待的去試了一下,果然是這個問題。解決方法主要有以下三種:
(1)解除安裝當前64位的mysql,重灌32為的mysql。(不推薦)
(2)下載QT原始碼檔案,重新編譯mysql驅動。(不推薦)可參考連結:https://segmentfault.com/a/1190000005691216
(3)去https://dev.mysql.com/downloads/connector/c/下載32位的zip壓縮包:
這裡寫圖片描述
解壓後得到libmysql.dll,將其複製到“F:\QT\5.5\mingw492_32\bin”(視自己情況而定)目錄即可:
這裡寫圖片描述
開啟QT,執行,終於看到後臺輸出:
這裡寫圖片描述