QMYSQL driver not loaded 的原理和解決辦法


轉:http://blog.csdn.net/m15814478834/article/details/49902077

最近使用Qt遇到了"QMYSQL driver not loaded"的問題.網上回答五花八門.大部分都沒法根本解決問題.解決問題的沒有原理,過程還繁瑣極容易犯錯.希望看到我這片文章的人不要在花兩周時間折騰各個版本的MySQL,各個版本的Qt了.

沒時間的直接看最后總結.

Qt連接到mysql的過程

Qt->Qt的數據庫插件->mysql動態庫->mysql

Qt的數據庫插件是\plugins\sqldrivers下的qsqlmysqld.dll qsqlmysql.dll

mysql動態庫是在mysql的安裝目錄下的libmysql.dll

以上dll存在才能順利連接數據庫.所以這篇文章所代表的拷貝libmysql.dll文件的答案占了一大半.實際上解決問題純屬幸運.當然因為需要dll,這篇文章所代表的配置環境變量又誤導了一堆人,這種配置環境變量的方法更是看臉.什么mysql空格什么的更是無稽之談.至少qt5.1開始.沒有路徑空格和中文的限制了.

那么為什么很多人使用Qt5以上的版本,其中包含qsqlmysqld.dll qsqlmysql.dll文件,也把libmysql.dll拷貝到Qt的bin或者程序輸出目錄了也還是driver not loaded呢?

因為不同版本的mysql里面包含不同的libmysql.dll, 不同的libmysql.dll必須和配套的qsqlmysqld.dll qsqlmysql.dll一起才能正常工作.

知道為什么了,如何解決呢?找到libmysql.dll去重新編譯對應版本的qsqlmysqld.dll qsqlmysql.dll.別擔心,和我一樣不願意敲命令行的人.我介紹一種使用Qt creater編譯的方法.

1:打開Qt安裝路徑下的源碼.例如C:\Qt\Qt5.2.0\5.2.0\Src\qtbase\src\plugins\sqldrivers\mysql.(如果沒有src路徑,重新安裝Qt,選擇完全安裝就有了)雙擊mysql.pro

2:如果是連接遠程數據庫,本機可以不裝mysql,但是必須找到一個mysql的安裝目錄復制到本地.這里面包含includ目錄和lib目錄.

3:編譯一下mysql.pro,提示少頭文件,mysql.pro中添加2中的include目錄,再編譯,缺少lib文件.添加lib文件.下圖示例

4:把編譯好的qsqlmysqld.dll qsqlmysql.dll拷貝到\plugins\sqldrivers下

5:mysql文件夾下lib路徑下的libmysql.dll復制到到目錄mingw47_32\bin

 

總結:不同版本的mysql里面包含不同的libmysql.dll, 不同的libmysql.dll必須和配套的qsqlmysqld.dll qsqlmysql.dll一起才能正常工作.可以 下載別人編譯好的.

qsqlmysqld.dll qsqlmysql.dll拷貝到\plugins\sqldrivers,libmysql.dll復制到到目錄mingw47_32\bin.必須配套使用,配套使用,配套使用.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM