解决qt5.14在vs2019中连接MySQL问题:QMYSQL driver not loaded

使用qt5.14在vs2019中连接MySQL数据时,提示QSqlDatabase: QMYSQL driver not loaded,该问题原因主要有:

1.缺少QMYSQL连接驱动。

解决方法:用qt源码生成QMYSQL驱动,具体编译过程在下方。

2.有驱动,但是MySQL Server 8.0的 libmysql.dll 和 libmysql.lib未引用,或qsqlmysql.dll未放到D:\QT5\5.15.1\mingw81_64\plugins\sqldrivers(自己qt安装路径)。

解决方法:将qsqlmysql.dll放到D:\QT5\5.15.1\mingw81_64\plugins\sqldrivers(自己qt安装路径),libmysql.dll 和 libmysql.lib放到qt的bin目录下。当然最好libmysql.dll,libmysql.lib,qsqlmysql.dll,qsqlmysql.lib文件放置在生成exe文件夹里,在vs2019里包含该目录,引用库文件包含这两个lib文件(将来好打包)。

3.使用某个编译器生成MySQL驱动的,只能使用该编译器调用生成的驱动!!!这是个大坑!!!)。如使用vs生成的驱动,则vs调用没问题;使用minGW生成的驱动,只能该编译器调用一切正常。反之就会出现,如下提示,已有MySQL驱动却报错驱动未加载。

 解决方法:编译器使用vs,则用vs生成驱动;编译器使用minGW,则使用该编译器生成驱动。同理其他也一样,这就是为什么网上有人提供相同版本的驱动,下载下来却用不了的原因。

4.MYSQL版本位数和qt版本位数不对应,如一个32位,一个64位则也会出现该情况。

解决方法:MYSQL和qt使用相同的32位或者64位即可。

5.其他问题,网上有人说是缺少libcrypto-1_1-x64.dll,libssl-1_1-x64.dll,libeay32.dll,ssleay32.dll这4个库文件。(我未遇到,也未引用这几个库,可以正常连接MySQL)。

解决方法:将这4个库文件拷贝到生成exe文件同目录下。

以上问题都解决的话,基本上就不会出现问题连接不成功问题。

下边以vs2019生成qt5.14.2的MySQL驱动为例。

编译环境

  • VC++ 2019
  • Qt 5.14.2 (其它版本流程也一样)
  • MySQL Community Server 8.0
  • Qt 5.14.2源代码 

 编译方法步骤

0.前置操作

 0.1修改C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql\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
include(../qsqldriverbase.pri)

INCLUDEPATH += "C:/Program Files/MySQL/MySQL Server 8.0/include"

DEPENDPATH += "C:/Program Files/MySQL/MySQL Server 8.0/include"

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

0.2在C:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers文件夹下,双击qsqldriverbase.pri打开该文件,将第四行注释掉,在下一行加入:include(./configure.pri)(我是用qt5.14.2,该目录下是configure.pri文件,所以要修改)

解决qt5.14在vs2019中连接MySQL问题:QMYSQL driver not loaded_第1张图片

1,开始菜单中找到Qt,启动 Qt 命令行窗口 (Qt 5.14.2 (MSVC 2017 64-bit))

2,在Qt 命令行窗口里运行VC命令行窗口命令:

D:\Program Files\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat(即进入到vcvars64.bat目录下,运行vcvars64.bat)

这样该命令行窗口同时有了Qt和VC的相关配置,可以开始编译。

3,编译命令:(各目录位置需根据你的实际安装位置来调整,%QTDIR% 为Qt源代码所在目录)

3.3进入到qt的     plugins\sqldrivers\mysql目录下输入:

qmake -- MYSQL_INCDIR="C:\Program Files\MySQL\MySQL Server 8.0\include" MYSQL_LIBDIR="C:\Program Files\MySQL\MySQL Server 8.0\lib"

 接着输入:nmake

 

 
  

编译完成后相关的dll文件:qsqlmysql.dll, qsqlmysqld.dll (release和debug版本都有)在

C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers目录下。将lib和dll的库文件拷贝到C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\plugins\sqldrivers或自己指定文件夹。

解决qt5.14在vs2019中连接MySQL问题:QMYSQL driver not loaded_第2张图片

还需要把一些依赖的dll文件拷到Qt对应的目录下:

  • libmysql.dll

从 C:\Program Files\MySQL\MySQL Server 8.0\lib 拷贝到 D:\Qt\Qt5.12.5\5.12.5\msvc2017_64\bin

现在可以正常使用Qt驱动在vs2019下操作MySQL数据库了。

你可能感兴趣的:(qt,mysql,visual,studio)