QT连接数据库报错-QT没有mysql驱动的解决办法SqlDatabase: QMYSQL driver not loadedQSqlDatabase: available drivers
文章目录:
一:报错和原因
二:如何确定自己环境是否匹配
三:如何解决
1.可能报错:qt的sqldrivers\mysql里面没有mysql.pro文件
解决办法:查看是否有src文件夹,没有就要(卸载重新安装,或者自己网上找源码、或者利用第三种问题的方法)
2.QT安装必须注意的事情:网上很多安装教程有问题
第二种问题:缺少文件利用编译生成
一:报错和原因
二:如何解决
第一步:查看D:\QT\5.12.10\mingw73_64\plugins\sqldrivers目录下是否有qsqlmysql.dll 和 qsqlmysqld.dll这两个动态链接库
第二步:查看Qt安装时中是否下载了源码
第三步:进入mysql项目源码的路径 D:\QT\5.12.10\Src\qtbase\src\plugins\sqldrivers\mysql
1.新建一个lib空文件夹(用于存后面生成的文件)
2.右键用QT软件打开mysql.pro
3.在QT里面编辑代码
4.修改msvc-version.conf文件(mingw73_64、msvc2017_64)
5.点击执行和构建
6.把这四个生成文件粘贴到对应的那个构建套件的驱动目录下sqldrivers
7.去MySQL安装路径下找到 libmysql.dll复制一下
第四步:重启电脑和QT
第三种问题:你的QTsqldrivers\mysql文件里面直接没有mysql.pro文件没法生成
一:报错和原因
二:如何解决
第一步:选择对应版本型号
第二步:将libcrypto-1_1-x64.dll,libmysql.dll,libssl-1_1-x64.dll这3个文件复制到D:\qt\QT\6.2.4\mingw_64\bin文件夹中
第三步:sqldrivers的mysql文件复制到D:\qt\QT\6.2.4\mingw_64\plugins\sqldrivers中
第四步:重启电脑和QT
第四部分:测试是否解决问题(QT连接Mysql数据库)
解决这个问题花了两三天,各种问题都遇到了,这里给大家避个坑
报错
QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
原因:qt没有mysql驱动
具体原因:MySQL Qt 驱动程序通常是作为一个单独的包提供,不是 Qt 的默认组件,需要自己生成相应的驱动文件
第一种问题:编译环境问题
一:报错和原因
原因:Mysql和QT环境不匹配
具体原因:Mysql的是64位的,但是我的QT是32位的,这就可能导致了libmysql.lib和QT套件位数不一样(mysql一定要和qt位数相同)
二:如何确定自己环境是否匹配
第一步:先看Mysql
win + r 输入:mysql --version
第二步:看QT
看见没:我的Mysql是64位,然而我的QT是32位
三:如何解决
环境不匹配,那么就卸载QT重新安装涩
怎么下载点这里
1.可能报错:qt的sqldrivers\mysql里面没有mysql.pro文件
原因:在安装的过程中qt安装包一定要带源码的版本,要安装源码,不然没有mysql.pro文件就无法编译了
解决办法:查看是否有src文件夹,没有就要(卸载重新安装,或者自己网上找源码、或者利用第三种问题的方法)
源码下载
在安装QT时,需要手动打上勾的选项是Source Components(源码),这个默认是不安装的,如果想要安装源码,需要手动打上勾后才能进行安装
2.QT安装必须注意的事情:网上很多安装教程有问题
我还发现网上很多安装教程有问题:这也是问题的关键,有些是必须勾选的组件,有的不能同时勾选64位和32位这样会导致冲突(别问,问就是我遇到过然后搞半天发现问题又卸载了,最后又重新安装),最好选择QT6以上的版本
根据自己的电脑来:比如我的电脑64位 那么 必须勾选:MinGw 6.2.4 64-bit(QT下)、Sources、MinGW 6.2.4-64(Developer下)
第二种问题:缺少文件利用编译生成
一:报错和原因
缺少相应文件:libqsqlmysql.a、libqsqlmysqld.a、qsqlmysql.dll、qsqlmysqld.dll
二:如何解决
下面的路径根据自己的安装路径来:别直接复制粘贴
第一步:查看D:\QT\5.12.10\mingw73_64\plugins\sqldrivers目录下是否有qsqlmysql.dll 和 qsqlmysqld.dll这两个动态链接库
如果没有,需要自己编译构建这两个文件(基于本地qt环境和mysql环境编译生成)
第二步:查看Qt安装时中是否下载了源码
没有点击源码下载
第三步:进入mysql项目源码的路径 D:\QT\5.12.10\Src\qtbase\src\plugins\sqldrivers\mysql
1.新建一个lib空文件夹(用于存后面生成的文件)
2.右键用QT软件打开mysql.pro
3.在QT里面编辑代码
修改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) # 指定这个文件的绝对地址 # 添加你自己的mysql安装目录下的include文件 INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 8.0\include" # 添加你的mysql安装目录下的lib文件夹下的libmysql.lib文件 LIBS += "C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.dll" # 设置编译好的qmysql.dll放置的目录,不然你可能不知道会生成在哪。 DESTDIR = ../mysql/lib/
或者
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) # 指定这个文件的绝对地址 # 添加你自己的mysql安装目录下的include文件 INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 8.0\include" # 添加你的mysql安装目录下的lib文件夹下的libmysql.lib文件 LIBS += "C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.lib" # 设置编译好的qmysql.dll放置的目录,不然你可能不知道会生成在哪。 DESTDIR = ../mysql/lib/
修改qsqldriverbase.pri
QT = core core-private sql-private # For QMAKE_USE in the parent projects. # include($$shadowed($$PWD)/qtsqldrivers-config.pri) include(./configure.pri) PLUGIN_TYPE = sqldrivers load(qt_plugin) DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
4.修改msvc-version.conf文件(mingw73_64、msvc2017_64)
D:\QT\5.12.10\mingw73_64\mkspecs\common
D:\QT\5.12.10\msvc2017_64\mkspecs\common
对应自己的编译器版本,里面会提示,我的是vs2012
QMAKE_MSC_VER, 1699
5.点击执行和构建
就会在D:\QT\5.12.10\Src\qtbase\src\plugins\sqldrivers\mysql\lib生成如下四个文件
libqsqlmysql.a libqsqlmysqld.a qsqlmysql.dll qsqlmysqld.dll
6.把这四个生成文件粘贴到对应的那个构建套件的驱动目录下sqldrivers
D:\QT\5.12.10\msvc2017_64\plugins\sqldrivers
7.去MySQL安装路径下找到 libmysql.dll复制一下
C:\Program Files\MySQL\MySQL Router 8.0\lib
找到之后,复制到Qt对应构建套件的bin目录下
D:\QT\5.12.10\mingw73_64\bin
D:\QT\5.12.10\msvc2017_64\bin
第四步:重启电脑和QT
第三种问题:你的QTsqldrivers\mysql文件里面直接没有mysql.pro文件没法生成
一:报错和原因
直接没有mysql.pro文件
二:如何解决
使用别人编译好文件不用生成: qt_mysql_驱动程序下载第一步:选择对应版本型号
根据编译器型号和电脑型号来选择:64位?32位?MinGW? MSVC?
Debug:通常称为调试版本 Release:称为发布版本
我选择的是: Release版本
第二步:将libcrypto-1_1-x64.dll,libmysql.dll,libssl-1_1-x64.dll这3个文件复制到D:\qt\QT\6.2.4\mingw_64\bin文件夹中
第三步:sqldrivers的mysql文件复制到D:\qt\QT\6.2.4\mingw_64\plugins\sqldrivers中
第四步:重启电脑和QT
第四部分:测试是否解决问题(QT连接Mysql数据库)
操作看这里: QT连接Mysql数据库
2401_85453630: 总结得很好
眸如星: np,学费应该交给你
刘鑫磊up: 素材在代码下载里面
红豆泥伢白仠: 请问您的游戏素材可以分享一下吗
太阳朵朵雨: https://blog.csdn.net/u012329294/article/details/87972492 去除掉复选框就行了