Qt配置mysql驱动

Qt配置mysql驱动

问题产生的环境:

  • QT6.2.3(mingw_64)
  • mysql5.7
  • win10
  • mingw_64,ninja,CMake(均采用qt自带的,在qt安装目录下的tool文件夹中,记得配置环境变量)

问题描述:

​ qt连接mysql数据库时报错:

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available QSQLITE QMARIADB QODBC QPSQL    

解决方案:

根据第二行报错信息可知该版本未安装mysql的驱动。查看qt安装目录下的(Qt\6.2.3\mingw_64\plugins\sqldrivers),确实没有qsqlmysql.dll动态链接库。

自己生成mysql驱动的动态链接库

  1. 下载qt6.2.3的源码

  2. 进入qt安装目录下的bin目录(E:\software\Qt\6.2.3\mingw_64\bin)

  3. 在该目录下进入cmd

  4. 执行如下命令

    qt-cmake -G Ninja E:\software\Qt\6.0.4\Src\qtbase\src\plugins\sqldrivers -DMySQL_INCLUDE_DIR="F:\qtPro\mysqlconntect\include" -DMySQL_LIBRARY="F:\qtPro\mysqlconntect\lib\libmysql.lib" -DCMAKE_INSTALL_PREFIX="E:\software\Qt\6.2.3\mingw_64"
    

    其中:

    • Ninja后面的为qt源代码中sqldrivers的目录

    • DMySQL_INCLUDE_DIR 为mysql中的include目录

    • DMySQL_LIBRARY 为 mysql中的libmysql.lib库

    • DCMAKE_INSTALL_PREFIX 可加可不加,我是加上了,官网上说的是最后安装dll的目录,可是我执行的时候并没有自动安装

    注: 以上这两个库可以在mysql安装目录中找到,不过我的安装目录中有空格(网上说目录中有空格不行),因此我将这两个目录拷贝出来了。

    成功执行后会显示如下信息:

    Configure summary:
    
    Qt Sql Drivers:
      DB2 (IBM) .............................. no
      InterBase .............................. no
      MySql .................................. yes
      OCI (Oracle) ........................... no
      ODBC ................................... yes
      PostgreSQL ............................. no
      SQLite ................................. yes
        Using system provided SQLite ......... no
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: E:/software/Qt/6.2.3/mingw_64/bin
    

    重点看:mysql后面有个yes.

  5. 上述命令执行没有报错的话,继续执行如下命令,进行手动编译

    ninja
    

    成功显示如下信息:

    [22/22] Linking CXX shared module plugins\sqldrivers\qsqlite.dll
    
  6. 以上命令执行完进入生成的plugins/sqldrivers目录中就可以看到生成的qsqlmysql.dll文件,将这个文件放到qt安装目录下的plugins/sqldrivers文件夹中。

解决 QMYSQL driver not loaded 问题

进过上述操作,如果还是发现mysql驱动未加载,则将mysql安装目录下的mysql.dll放到qt安装目录下的bin目录当中,再次运行程序,mysql成功连接。

参考文献:

  • CSDN,博客园等等上的大佬们的各种资料,由于太多而且实际解决我出现的这个问题,因此就不一一列出了。
  • https://doc.qt.io/qt-6/sql-driver.html (qt官网,这个是qt6的配置驱动的说明,但是不全(也可能是我英语不好没看明白,例如最后使用ninja的编译官网就没写出,我是后面查看qt5手册发现有个make install 指令才想起来试试使用ninja命令的)

写在后面

不求能解决你的问题,但是希望能给到你启发。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值