QT5.13安装MYSQL8.0驱动

第一篇博客,想想居然有点小激动!

最近在学习QtSQL,SQLITE用起来很爽,但是速度貌似有点慢,于是就想换MYSQL试试,结果死活加载不了驱动。网上搜出来一大堆文章,挨个试了个遍都不行,差点被劝退。最后终于摸索出来了,将详细的过程记录下来,如果你刚好被这个问题折磨,看到这篇文章就对了,接下来 Follow me…


操作系统:

  • Microsoft Windows 10 Pro N 64bit

所需软件:

  • mysql-installer-community-8.0.17.0
  • qt-opensource-windows-x86-5.13.1
  • Git-2.23.0-64-bit

除此之外,由于我们还要自己编译mysql驱动,因此还需要下载QT源代码。

  • qt-everywhere-src-5.13.1.zip

一切准备妥当之后开始安装。git不用说了,一路下一步就行了。
安装QT的时候需要选择64bit编译器,要不然编译不过
QT5.13安装MYSQL8.0驱动_第1张图片
然后一路下一步就OK了。安装完成后,为了可以直接在命令行中使用qmake和mingw32-make,我们还需要编译器的路径添加到系统环境变量。
QT5.13安装MYSQL8.0驱动_第2张图片
接着就可以安装mysql了,一路下一步就行了,默认就是安装的64bit的connector/c++。

安装完成之后我就迫不及待的试了一下。

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setUserName("root");
    db.setPassword("xxxxxxxx");
    db.setDatabaseName("testDB");

    if(!db.open()) {
        qDebug() << db.lastError();
    } else {
        qDebug() << "Successful connected.";
    }

结果出来是下面这样…

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
QSqlError("", "Driver not loaded", "Driver not loaded")

我们可以看到在available drivers中就没有QMYSQL,说明QT5.13默认是没有安装mysql的驱动的。
找了一下QT的sql驱动是在下面这个目录中,

C:\Qt\Qt5.13.1\5.13.1\mingw73_64\plugins\sqldrivers

可以看到该文件夹下面的文件就是对应的available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7,后缀带d的就是debug版本。
QT5.13安装MYSQL8.0驱动_第3张图片因此我们只要找到qtsqlmysql.dll和qtsqlmysqld.dll两个文件因该就可以解决问题了。
接下来就需要将这两个文件编译出来了。解压下载的qt-everywhere-src-5.13.1.zip,路径中不要包含中文和空格
找到

qt-everywhere-src-5.13.1\qtbase\src\plugins\sqldrivers\mysql

文件夹下面的 mysql.pro,注释掉

//QMAKE_USE += mysql

编译mysql驱动还需要mysql的头文件和库,因此在文件末尾加上

INCLUDEPATH += "C:/Program Files/MySQL/MySQL Server 8.0/include"
LIBS += "C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"

注意斜杠和反斜杠。
QT5.13安装MYSQL8.0驱动_第4张图片
接下来就可以开始编译了。
在当前目录下右击,选择git bash here,打开shell,输入qmake,WTF?

Info: creating stash file D:\qt-everywhere-src-5.13.1\qtbase\src\plugins\sqldrivers\.qmake.stash
Cannot read D:/qt-everywhere-src-5.13.1/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: No such file or directory

找了一下sqldrivers目录中的确没有这个文件呀…

发现该目录下面有一个sqldriver.pro,尝试运行qmake,qtsqldrivers-config.pri神奇地出现了!再返回到mysql目录中,成功运行qmake!
接着运行mingw32-make编译驱动,不出意外的话,会在

D:\qt-everywhere-src-5.13.1\qtbase\src\plugins\sqldrivers\plugins\sqldrivers

文件夹下看到libqsqlmysql.a、libqsqlmysqld.a、qsqlmysql.dll、qsqlmysqld.dll四个文件,然后运行mingw32-make release-install和mingw32-make debug-install,qsqlmysql.dll和qsqlmysqld.dll将被复制到

C:\Qt\Qt5.13.1\5.13.1\mingw73_64\plugins\sqldrivers

然后我又迫不及待地试了一下,结果…

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
QSqlError("", "Driver not loaded", "Driver not loaded")

不过欣慰的是,这次available drivers 中已经有了QMYSQL,看来离成功已经不远了!
接下来按照网上的方法将

C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.dll

拷贝至

C:\Qt\Qt5.13.1\5.13.1\mingw73_64\bin

然后再运行测试程序

Successful connected.

驱动终于加载成功,又可以愉快地玩耍了!

你可能感兴趣的:(QT5.13安装MYSQL8.0驱动)