轉: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.必須配套使用,配套使用,配套使用.