win10上Qt5.14.2+mingw64編譯MySql5.7驅動


首先是新建一個Qt工程,在pro文件中

QT += sql

#include <QSqlDatabase>

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //QMYSQL是固定的
db.setHostName("127.0.0.1");
db.setDatabaseName("testdatabase"); //測試的數據庫名
db.setUserName("root"); //mysql數據庫用戶名
db.setPassword("sunshine"); //這里寫你的MySql數據庫密碼
bool ok = db.open();

if (ok)
{
qDebug() << "connect ok";
}
else
{
qDebug() << "connect failed";
}

如果你現在connect ok則,恭喜你不用自己編譯MySql庫了。如果報出MySql的驅動沒有加載,則耐心繼續一步步往下看,困擾了我兩天多,終於解決了。我把一些踩坑的過程記錄下來,以及編譯成功的步驟也詳細寫出來,希望能幫到和我有一樣需求的人。
Qt的幫助文檔有篇專門寫數據庫驅動如何編譯的“SQL Database Drivers”,可以去仔細研究這個,如果沒有這個精力,也沒關系,我們繼續往下看:
一、確認一些環境設置以及軟件版本

Qt安裝的時候勾選了安裝Qt源碼,否則就沒有下面的自己編譯數據庫驅動這個過程。
安裝的數據庫版本和編譯器的位數相同,如果是x64,則兩者都是x64。舉例:我的編譯器是用的mingw73_64,x64位。

 

 

 


如何查看mysql是32位還是64位?
D:\MySQL_Server_5_7\bin>mysql -V
mysql Ver 14.14 Distrib 5.7.29, for Win64 (x86_64)

 

 

 


mysql是64位的——win64
3. 環境變量

你的這個能出來,如果出不來,就去相應的目錄去手動打開,建議最好右鍵管理員運行這個,不要用cmd。輸入qmake,有以下輸出,則沒問題,可以繼續。

 

 

 

 

 

4.其他一些非必須的環境變量設置
比如將MySql的bin目錄,lib目錄加入到環境變量中。這個應該是非必須的,我是前面踩坑多了,才安裝網上的一些教程做的,后來編譯成功發現這個應該是非必須的。

二、開始編譯
步驟一
修改mysql.pro文件

D:\Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql

我的Qt安裝路徑是在D盤,你的也是按照這個路徑格式去找

#QMAKE_USE += mysql

INCLUDEPATH += "D:/MySQL_Server_5_7/include"
LIBS += "D:/MySQL_Server_5_7/lib/libmysql.lib"

只需要注釋掉一行#QMAKE_USE += mysql,前面加#號就是注釋掉了。
加兩行,一個是你的MySQL安裝目錄的include路徑,一個是你的libmysql.lib路徑位置。
我把完整的mysql.pro文件展示一下:

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin

INCLUDEPATH += "D:/MySQL_Server_5_7/include"
LIBS += "D:/MySQL_Server_5_7/lib/libmysql.lib"

include(../qsqldriverbase.pri)

這里要避免一些坑,你的MySql路徑有空格,這是一個坑,處理方式有兩種:方式一,加$$quote
方式二、重新安裝MySql,這個代價比較大。
那就詳細說說方式一怎么操作:
舉例:引用自Qt在pro文件中加入帶空格的路徑

LIBS += -L$$quote(C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib)
INCLUDEPATH += $$quote(C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include)

步驟二

 

 

 

 

最好是右鍵管理員運行這個,如果普通雙擊打開也可以,貌似也可以,后面可能要手動復制一些東西。

 

 

 

 

cd 到你的sqldrivers目錄,qmake,這個是為了生成qtsqldrivers-config.pri

cd mysql
qmake
mingw32-make
mingw32-make install

如果你沒看到任何報錯信息,則應該會在這個目錄

D:\Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers

中看到生成的一些dll

 

 

 

 

后綴.debug的是debug版本,這個我有納悶,應該是qsqlmysqld.dll,才是debug版本的,這個先不去細究。
可以將這個目錄中除.a的文件外的,都復制到以下路徑中(如果沒有的話,就手動復制進來吧,如果有的話,也是一樣的,因為上面的mingw32-make install就是自動復制到下面這個路徑中)

D:\Qt\Qt5.14.1\5.14.1\mingw73_64\plugins\sqldrivers

步驟三、最后一步

 

 

 

將MySql安裝目錄中的這兩個文件復制到D:\Qt\Qt5.14.1\Tools\mingw730_64\bin中。

步驟四、測試方法
和開頭的一樣,Qt建工程,連接MySql數據庫,看看是否連接成功,具體可以參考這個:
https://blog.csdn.net/m0_37194132/article/details/85043349

另外,如果你本機沒有安裝MySql,那就去官網下個C驅動的包,安裝上面的步驟一樣可以編譯Qt的MySql庫。
下載路徑:https://downloads.mysql.com/archives/c-c/
選擇對應的zip壓縮包下載,自行解壓。




免責聲明!

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



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