• win10上Qt5.14.2+mingw64编译MySql5.7驱动


    首先是新建一个Qt工程,在pro文件中

    QT += sql

    #include <QSqlDatabase>

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //QMYSQL是固定的
    db.setHostName("127.0.0.1");
    db.setDatabaseName("testdatabase"); //测试的数据库名
    db.setUserName("root"); //mysql数据库用户名
    db.setPassword("sunshine"); //这里写你的MySql数据库密码
    bool ok = db.open();

    if (ok)
    {
    qDebug() << "connect ok";
    }
    else
    {
    qDebug() << "connect failed";
    }

    如果你现在connect ok则,恭喜你不用自己编译MySql库了。如果报出MySql的驱动没有加载,则耐心继续一步步往下看,困扰了我两天多,终于解决了。我把一些踩坑的过程记录下来,以及编译成功的步骤也详细写出来,希望能帮到和我有一样需求的人。
    Qt的帮助文档有篇专门写数据库驱动如何编译的“SQL Database Drivers”,可以去仔细研究这个,如果没有这个精力,也没关系,我们继续往下看:
    一、确认一些环境设置以及软件版本

    Qt安装的时候勾选了安装Qt源码,否则就没有下面的自己编译数据库驱动这个过程。
    安装的数据库版本和编译器的位数相同,如果是x64,则两者都是x64。举例:我的编译器是用的mingw73_64,x64位。


    如何查看mysql是32位还是64位?
    D:MySQL_Server_5_7in>mysql -V
    mysql Ver 14.14 Distrib 5.7.29, for Win64 (x86_64)


    mysql是64位的——win64
    3. 环境变量

    你的这个能出来,如果出不来,就去相应的目录去手动打开,建议最好右键管理员运行这个,不要用cmd。输入qmake,有以下输出,则没问题,可以继续。

    4.其他一些非必须的环境变量设置
    比如将MySql的bin目录,lib目录加入到环境变量中。这个应该是非必须的,我是前面踩坑多了,才安装网上的一些教程做的,后来编译成功发现这个应该是非必须的。

    二、开始编译
    步骤一
    修改mysql.pro文件

    D:QtQt5.14.15.14.1Srcqtbasesrcpluginssqldriversmysql

    我的Qt安装路径是在D盘,你的也是按照这个路径格式去找

    #QMAKE_USE += mysql

    INCLUDEPATH += "D:/MySQL_Server_5_7/include"
    LIBS += "D:/MySQL_Server_5_7/lib/libmysql.lib"

    只需要注释掉一行#QMAKE_USE += mysql,前面加#号就是注释掉了。
    加两行,一个是你的MySQL安装目录的include路径,一个是你的libmysql.lib路径位置。
    我把完整的mysql.pro文件展示一下:

    TARGET = qsqlmysql

    HEADERS += $$PWD/qsql_mysql_p.h
    SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

    #QMAKE_USE += mysql

    OTHER_FILES += mysql.json

    PLUGIN_CLASS_NAME = QMYSQLDriverPlugin

    INCLUDEPATH += "D:/MySQL_Server_5_7/include"
    LIBS += "D:/MySQL_Server_5_7/lib/libmysql.lib"

    include(../qsqldriverbase.pri)

    这里要避免一些坑,你的MySql路径有空格,这是一个坑,处理方式有两种:方式一,加$$quote
    方式二、重新安装MySql,这个代价比较大。
    那就详细说说方式一怎么操作:
    举例:引用自Qt在pro文件中加入带空格的路径

    LIBS += -L$$quote(C:Program Files (x86)Microsoft SDKsWindowsv7.1ALib)
    INCLUDEPATH += $$quote(C:Program Files (x86)Microsoft SDKsWindowsv7.1AInclude)

    步骤二

    最好是右键管理员运行这个,如果普通双击打开也可以,貌似也可以,后面可能要手动复制一些东西。

    cd 到你的sqldrivers目录,qmake,这个是为了生成qtsqldrivers-config.pri

    cd mysql
    qmake
    mingw32-make
    mingw32-make install

    如果你没看到任何报错信息,则应该会在这个目录

    D:QtQt5.14.15.14.1Srcqtbasesrcpluginssqldriverspluginssqldrivers

    中看到生成的一些dll

    后缀.debug的是debug版本,这个我有纳闷,应该是qsqlmysqld.dll,才是debug版本的,这个先不去细究。
    可以将这个目录中除.a的文件外的,都复制到以下路径中(如果没有的话,就手动复制进来吧,如果有的话,也是一样的,因为上面的mingw32-make install就是自动复制到下面这个路径中)

    D:QtQt5.14.15.14.1mingw73_64pluginssqldrivers

    步骤三、最后一步

    将MySql安装目录中的这两个文件复制到D:QtQt5.14.1Toolsmingw730_64in中。

    步骤四、测试方法
    和开头的一样,Qt建工程,连接MySql数据库,看看是否连接成功,具体可以参考这个:
    https://blog.csdn.net/m0_37194132/article/details/85043349

    另外,如果你本机没有安装MySql,那就去官网下个C驱动的包,安装上面的步骤一样可以编译Qt的MySql库。
    下载路径:https://downloads.mysql.com/archives/c-c/
    选择对应的zip压缩包下载,自行解压。



  • 相关阅读:
    部署iis服务器与c#程序遇到的问题小结
    Installing node-oracledb on Microsoft Windows
    Navicat:cant create OCI environment.
    socket.io 中文手册 socket.io 中文文档
    现有的情绪
    Express 4.x Node.js的Web框架
    结构与类的对象在引用上的不同之处
    Android时间戳转换为标准Datetime(yyyy-MM-dd hh:mm:ss)格式
    ASP.NET MVC4中调用WEB API的四个方法
    安恒DASCTF 四月战 WP
  • 原文地址:https://www.cnblogs.com/sea520/p/13152307.html
Copyright © 2020-2023  润新知