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() <<db->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

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