Qt不支持事務解決辦法

Qt在使用mysql數據庫時,數據庫可以正常連接,增刪改都沒有問題,但在判斷是否支持事務時顯示false

使用下面的語句判斷

qDebug () <<"Transactions" << QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions) //輸出false

查資料瞭解到,是mysql的驅動,與Qt當前版本不匹配導致的

解決辦法:

第一步:重新編譯mysql驅動

在Qt源代碼中,提供了編譯mysql驅動的工程 C:\Qt\Qt5.12.3\5.12.3\Src\qtbase\src\plugins\sqldrivers\mysql

(1)打開目錄下mysql.pro

(2)註釋 #QMAKE_USE += mysql

(3)添加 DESTDIR = ../mysql/lib/

(4)添加mysql頭文件目錄,編譯

INCLUDEPATH +="D:\Software\mysql-8.0.19-winx64\include"(替換爲當前下載的mysql目錄)

LIBS +="D:\Software\mysql-8.0.19-winx64\lib\libmysql.lib"(替換爲當前下載的mysql目錄)

第二步:替換編譯後的文件

(1)在替換之前,若已經在debug/release目錄下生成了sqldrivers文件夾,則將第一步編譯生成的qsqlmysqld.dll和qsqlmysql.dll分別拷貝至目錄sqldrivers文件夾。若沒有該文件夾,手動創建或者使用windeployqt命令。

(2)拷貝mysql目錄下lib文件夾中的libmysql.dll,拷貝至debug/release根目錄

(3)拷貝mysql目錄下bin文件夾中的libcrypto-1_1-x64.dll和libssl-1_1-x64.dll,拷貝至debug/release根目錄

再次執行

qDebug () <<"Transactions" << QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions);

 

返回值爲true,問題解決。

附上編譯好的資源https://download.csdn.net/download/daxuezdj7/12584330

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章