qt中重新编译mysql_Qt重新编译mysql,使用事务操作

本文介绍了在Qt项目中因操作MySQL数据库需求,发现Qt自带的驱动不支持事务,通过重新编译MySQL驱动来实现事务操作的详细步骤。在Qt 5.9.7和5.11.2 MSVC64环境下,经过验证,原驱动不支持事务,然后从MySQL服务器获取头文件和库,修改Qt的mysql.pro配置,编译生成新的qsqlmysql.dll并替换原有驱动,解决了问题。
摘要由CSDN通过智能技术生成

项目中需要使用Qt操作mysql数据库,并且有数据量大,数据复杂度高的难题,所以必须使用事务操作。

验证环境:

Qt版本:5.9.7 MSVC64,5.11.2 MSVC64

操作系统:windows 10 , 64位

Mysql数据库版本:5.7

以上环境,使用Qt自带的Mysql数据库驱动,均不支持数据库事务操作。

验证Qt是否支持事务操作的方法:

QSqlDatabase *db;

db = new QSqlDatabase(QSqlDatabase::addDatabase("QMYSQL","XXX"));

db->setHostName("XXX.XXX.XXX.XXX");

db->setDatabaseName("XXX");

db->setUserName("hsp");

db->setPassword("888168");

db->setPort(3306);

if(db->open())

{

qDebug() << "open success";

qDebug()

qDebug() << db->driver()->hasFeature(QSqlDriver::Transactions);

}

else

{

qDebug() << db->lastError().text();

}

解决步骤:

从Mysql服务器安装目录下,拷贝出头文件和依赖库

在Qt安装目录下,提供了重新编译Mysql驱动的源程序,使用Qt Creator 打开此工程,参考路径:D:\Qt\Qt5.11.2\5.11.2\Src\qtbase\src\plugins\sqldrivers\mysql

在Mysql.pro中配置从Mysql服务器拷贝过来的头文件和依赖库。

win32: LIBS +=-L$$PWD/…/…/…/…/…/…/…/…/…/MySQL/lib/ -llibmysql

INCLUDEPATH +=$$PWD/…/…/…/…/…/…/…/…/…/MySQL/include

DEPENDPATH +=$$PWD/…/…/…/…/…/…/…/…/…/MySQL/include

替换Qt自带的mysql驱动

配置完毕,编译工程文件,如果不出错,则会生成最新的Mysql数据库驱动,用最新的qsqlmysql.dll替换Qt自带的qsqlmysql.dll(最好做个备份)。

大概率会出错,如果出错,再根据具体错误提示,解决即可。(我在编译Mysql驱动时,还出现了很多其他的错误,但没有及时记录,很是遗憾)。

如果你在编译过程中,还遇见了不能解决的问题,可以贴出来,我有空可以帮忙解决。

Qt、C++疑难杂症交流群:302558294

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值