Window下 Qt 編譯MySQL驅動

飛翔的黃瓜發表於2017-08-02

搞了一整天的qt下連線mysql的事,終於搞定了

這裡使用mysql的過程中主要會出現“QMYSQL driver not loaded”的錯誤,這有兩種可能

1.qt找不到你的mysql的驅動。
      先去你的Qt的安裝目錄(例:C:\Qt\4.8.5\plugins\sqldrivers)下找找看有沒有mysql的驅動

      驅動的名字為“libqsqlmysqld4.a ”和 “qsqlmysqld4.dll”(搜尋的過程中很多人說是這兩個檔案“qsqlmysql.dll”和“qsqlmysqld.dll”,可能是qt4和qt5的卻別,我的qt4最後編譯mysql驅動生成的就是前面的兩個)

      如果能找到這兩個檔案,那麼恭喜你,不需要自己去編譯生成這兩個驅動檔案了


2.qt目錄下有驅動檔案,但是qt找不到mysql的庫檔案

     庫的檔名為“libmysql.lib”,這個庫檔案應該放在Qt的bin資料夾下(例:C:\Qt\4.8.5\bin)

     趕緊去資料夾裡看看,十有八九沒有啊,怎麼辦呢?

     去你mysql的安裝目錄找找,在lib資料夾裡


另外強調一下,mysql的版本必須要和Qt一樣。即32位都是32位,搞錯了會出錯的。

關於mysql的下載,我也是弄了很久,剛開始不知道mysql可以免安裝,就以為下錯了。其實mysql有安裝和解壓兩種(不只是單純的解壓哦)

這裡給個安裝方法連結http://www.cnblogs.com/fnlingnzb-learner/p/6009153.html



接下來是重點,對mysql的驅動進行編譯,以生成libqsqlmysqld4.a ”和 “qsqlmysqld4.dll”這兩個檔案

1.首先找到Qt安裝目錄下的mysql.pro工程原始碼,我的路徑為:C:\Qt\4.8.5\src\plugins\sqldrivers\mysql

用Qt開啟該工程,試著進行構建,一般來說,Qt會告訴你找不到mysql.h檔案,這時候不要慌,去你的mysql安裝目錄下或者剛下載的壓縮包裡找找,找到include資料夾

然後在PRO中加入這兩句


編譯後,查詢生成資料夾debug或release中會有這兩個libqsqlmysqld4.a ”和 “qsqlmysqld4.dll”


複製後放入C:\Qt\4.8.5\plugins\sqldrivers這個路徑,千萬不要放錯哦,然後就應該可以正常使用啦


2017/8/3更新  按上文連線發現有問題,資料夾下並沒有data資料夾,新增方法如下:

輸入cmd進入控制檯

1.停止mysql,在命令視窗中輸入並執行:net stop mysql 即可

2.進入到mysql安裝目錄的bin目錄下。然後輸入命令(備註:所有的--前面均有一個空格哦。建議直接複製,不要自己輸入命令,以防丟失空格哦):

mysqld --initialize-insecure --user=mysql

然後回車;去目錄下檢視,已經自動建立好data資料夾,然後再次啟動。

這裡有個疑惑 用Qt連線資料庫時,setDatabaseName()這個函式只有選擇已經存在的資料庫時,才可以連線,如果不存在則連線失敗


相關文章