最近在学QT,现在QT只能在线安装了,用了几天,看到数据库时,需要用MySQL,结果出现了问题。
QSqlDatabase: QMYSQL driver not loaded、
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7、Sql connect failed、"Driver not loaded Driver not loaded"
网上找到很多资料,最终圆满解决,以下资料为本人亲自处理过程,现分享给大家!
一.如果连接时出现
“SSL connection error: protocol version mismatch QMYSQL: Unable to connect”
表示:高版本的客户端连接到低版本的MySql Server
解决方法: 服务器配置中 跳过 SSL
-----------------------------------------------------
例:MySql 安装的 5.7 Server
WINDOWS服务中找到 MySQL57--属性
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" MySQL57
我们就要修改这个文件 C:\ProgramData\MySQL\MySQL Server 5.7\my.ini 文件
编辑这个文件:在文件的尾部加上
# disable_ssl
skip_ssl
二.使用QT连接MySQL的过程中出现:
QSqlDatabase: QMYSQL driver not loaded、
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7、Sql connect failed、"Driver not loaded Driver not loaded"。
表示:没有驱动(或驱动不匹配)
解决方法:编译QT中的mysql驱动
例:(安装的QT中有这个项目)
D:\ProgramFiles\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro
1).下载mysql-connector-c-6.1.11-win32.zip和mysql-connector-c-6.1.11-winx64.zip 驱动,官网上有。
解压到如:D:\Softwares\QT\MySql\mysql 和D:\Softwares\QT\MySql\mysql64
2).用QT打开项目: D:\ProgramFiles\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro
mysql.pro修改如下(32,64位编译做启用注释即可):
上面引用 了 include(../qsqldriverbase.pri) ,这个文件也要改一下qsqldriverbase.pri
文件1: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
文件2:mysql.pro内容
D:\ProgramFiles\Qt\5.15.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)
#针对 windows 32 位系统
# LIBS +=$$quote(D:/Softwares/QT/MySql/mysql/lib/libmysql.lib)
# INCLUDEPATH +=$$quote(D:/Softwares/QT/MySql/mysql/include)
# DEPENDPATH +=$$quote(D:/Softwares/QT/MySql/mysql/include)
# DESTDIR = d:/mysqllib
#针对 windows 64 位系统
LIBS +=$$quote(D:/Softwares/QT/MySql/mysql64/lib/libmysql.lib)
INCLUDEPATH +=$$quote(D:/Softwares/QT/MySql/mysql64/include)
DEPENDPATH +=$$quote(D:/Softwares/QT/MySql/mysql64/include)
DESTDIR = d:/mysqllib64
上面正常构建后D:\mysqllib 和D:\mysqllib64 下会生成文件
qsqlmysql.dll
qsqlmysql.dll.debug
32位的 由D:\mysqllib 复制到D:\ProgramFiles\Qt\5.15.2\mingw81_32\plugins\sqldrivers
62位的 由D:\mysqllib64 复制到D:\ProgramFiles\Qt\5.15.2\mingw81_64\plugins\sqldrivers
另外 libmysql.dll库文件也需要复制:
32位:
由D:\Softwares\QT\MySql\mysql\lib\libmysql.dll 复制到D:\ProgramFiles\Qt\5.15.2\mingw81_32\bin
62位:
由D:\Softwares\QT\MySql\mysql64\lib\libmysql.dll 复制到D:\ProgramFiles\Qt\5.15.2\mingw81_64\bin
上述完成了,重启QT,再打开项目进行测试即可.
祝你好运!
标签:QT5.15,QT,菜鸟,mysql,MySql,MySQL,include,老鸟,Softwares From: https://www.cnblogs.com/bluejade/p/18556703