项目版本

操作系统: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

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐