Qt重新编译mysql,使用事务操作

项目中需要使用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() <driverName();

    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

你可能感兴趣的:(Qt编程)