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驱动为例。
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文件,所以要修改)
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或自己指定文件夹。
还需要把一些依赖的dll文件拷到Qt对应的目录下:
从 C:\Program Files\MySQL\MySQL Server 8.0\lib 拷贝到 D:\Qt\Qt5.12.5\5.12.5\msvc2017_64\bin
现在可以正常使用Qt驱动在vs2019下操作MySQL数据库了。