【项目解决方案】32位QT连接64位MySQL
项目版本
操作系统:Windows
Qt:5.9.0
构建套件(Kit):Desktop Qt 5.9.0 MinGW 32bit
MySQL:8.0.31 for Win64 on x86_64
# cmd查看MySQL版本
mysql -V
Error 1:Driver not loaded
Qt 5.9.0使用的MinGW编译器只有32位,连接64位MySQL时出现报错:
(1)下载MySQL官方C版本32位驱动
MySQL Connector/C (Archived Versions)
https://downloads.mysql.com/archives/c-c/
下载zip文件即可
全部解压缩,找到lib目录下的libmysql.dll文件,拷贝到Qt编译器目录下的bin目录中,一般路径为..\mingw53_32\bin
根据实际情况操作:
我的libmysql.dll文件路径为:E:\MySQL\mysql-connector-c-6.1.11-win32\lib
拷贝到:E:\QT\5.9\mingw53_32\bin
(2)修改mysql.pro文件
找到Qt版本下的mysql.pro,一般路径为..\Src\qtbase\src\plugins\sqldrivers\mysql
根据实际情况操作:
我的mysql.pro文件路径为:E:\QT\5.9\Src\qtbase\src\plugins\sqldrivers\mysql
打开文件,修改INCLUDEPATH、LIBS及DESTDIR路径
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 += E:/MySQL/mysql-connector-c-6.1.11-win32/include/
#更改路径(按实际情况操作)
LIBS += E:/MySQL/mysql-connector-c-6.1.11-win32/lib/libmysql.lib
#更改路径
DESTDIR = ../mysql/mysqlDll32
(3)修改qsqldriverbase.pri文件
之前参考其他文章时看评论说可以不修改这个文件,自己尝试发现不修改的话构建mysql项目会报构建错误
返回上一级目录找到qsqldriverbase.pri文件,即..\Src\qtbase\src\plugins\sqldrivers
根据实际情况操作:
我的qsqldriverbase.pri文件路径为:E:\QT\5.9\Src\qtbase\src\plugins\sqldrivers
修改文件
QT = core core-private sql-private
#注释掉这一行
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
PLUGIN_TYPE = sqldrivers
load(qt_plugin)
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
【如果仍然构建失败,可能要多添加一行】
QT = core core-private sql-private
#注释掉这一行
#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)构建mysql项目
双击打开mysql.pro文件,点击左下角的锤子图案按钮构建项目
自动在..\Src\qtbase\src\plugins\sqldrivers\mysql路径下生成mysqlDll32目录
根据实际情况操作:
我的mysqlDll32目录路径为:E:\QT\5.9\Src\qtbase\src\plugins\sqldrivers\mysql
(5)复制dll文件到sqldrivers目录中
将刚生成的mysqlDll32目录下的qsqlmysql.dll及qsqlmysqld.dll文件拷贝到Qt编译器目录下的sqldrivers目录中,一般路径为..\mingw53_32\plugins\sqldrivers
建议打开两个文件资源管理器,比较好操作
根据实际情况操作:
我的sqldrivers目录路径为:E:\QT\5.9\mingw53_32\plugins\sqldrivers
至此,Driver not loaded的报错成功解决
Error2:SSL connection error
MySQL的SSL加密功能导致运行项目时报错:
(1)检查SSL功能状态
打开MySQL命令行客户端软件(可在导航栏搜索),输入密码登录
查看SSL开启状态(注意句末的英语分号)
SHOW VARIABLES LIKE '%ssl%';
(2)关闭SSL功能
找到并打开MySQL的配置文件my.ini或my.cnf
根据实际情况操作:
我的my.ini文件路径为:E:\MySQL\Data
可能大部分一般会在C盘的ProgramData目录里(隐藏文件,需要显示隐藏的项目):
例如:C:\ProgramData\MySQL\MySQL Server 8.0
(编辑此目录里的配置文件需要授权,可跳转至附录部分查看)
在[mysqld]下方添加语句并保存
skip_ssl
(3)重启MySQL服务
打开计算机管理软件(可在导航栏搜索),找到MySQL服务重新启动
根据实际版本操作:
可能有的服务名称为MySQL57
(4)再次检查SSL功能状态

至此,SSL connection error的报错成功解决
附录:编辑C盘ProgramData目录中的MySQL配置文件
(1)显示隐藏的项目
(2)修改配置文件权限
右键打开文件属性
根据实际情况操作:
我的my.ini文件路径为:C:\ProgramData\MySQL\MySQL Server 8.0
更多推荐


























所有评论(0)