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

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