开发环境:Windows10+QT5.14.2+MySQL5.7.25

编译步骤:

1、下载安装mysql压缩包,下载地址为:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.25-win32.zip

也可以打开MySQL :: Download MySQL Community Server (Archived Versions)网页后,自行选择32位版本的mysql软件进行下载,网络上常见的mysql-installer-community-5.7.25.0.msi安装时候有时候会可以选择X86的安装,默认是64位的安装,如果安装目录是C:\Program Files\MySQL\MySQL Server 5.7则证明安装的版本是64位的,如果安装位置为C:\Program Files (x86)\MySQL\MySQL Server 5.7则证明安装的是32位的。使用64位mysql编译出来的驱动无法在mingw32中使用。

 2、下载好mysql压缩文件后,解压mysql-5.7.25-win32.zip到c:\mysql,之后新增系统环境变量:
变量名:MYSQL_HOME 变量值为:C:\mysql;编辑path环境变量,在末尾新增;%MYSQL_HOME%\bin即可。

 

 

3、打开C:\mysql目录,新建一个my.ini文件,使用记事本打开后编辑文件内容为:

[mysqld]
port = 3306
basedir=C:/mysql
datadir=C:/mysql/data 
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8

 

4、使用资源管理器打开C:\Windows\System32后搜索cmd.exe,找到后点击鼠标右键-选择以管理员身份运行。

5、在打开的cmd窗口中输入下面命令注册启动mysql:

Microsoft Windows [版本 10.0.19045.2194]
(c) Microsoft Corporation。保留所有权利。

C:\Windows\System32>cd c:/mysql/bin

c:\mysql\bin>mysqld -install
Service successfully installed.

c:\mysql\bin>mysqld --initialize-insecure --user=mysql

c:\mysql\bin>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。

c:\mysql\bin>mysqladmin -u root -p password
Enter password:
New password: ******
Confirm new password: ******
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

c:\mysql\bin>

 6、启动mysql成功后,可以使用Navicat for MySQL成功连接到127.0.0.1打开本地数据库。

7、打开QT5.14.2软件:C:\Qt\Qt5.14.2\Tools\QtCreator\bin\qtcreator.exe ,后打开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)
#64位mysql编译时需新增如下两行
#LIBS += "C:\Program Files\MySQL\MySQL Server 5.7\lib\libmysql.lib"
#INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 5.7\include"
#32位mysql编译时需新增如下两行
LIBS += "C:/mysql/lib/libmysql.lib"
INCLUDEPATH += "C:/mysql/include"
DESTDIR = ./mysql32/lib

 8、编译运行mysql.pro项目后,会在C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql32\lib目录下生产对应的三个驱动文件:libqsqlmysql.a,qsqlmysql.dll,qsqlmysql.dll.debug。此时需要拷贝拷贝三个驱动文件
libqsqlmysql.a,qsqlmysql.dll,qsqlmysql.dll.debug三个文件
从目录:C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql32\lib到目录:C:\Qt\Qt5.14.2\5.14.2\mingw73_32\plugins\sqldrivers下。

 另外需拷贝libmysql.dll文件从
源目录:C:\mysql\lib到目标目录:C:\Qt\Qt5.14.2\5.14.2\mingw73_32\bin下

 9、自建新的QT mingw32项目后,测试MYSQL数据库连接通过,测试代码如下:

    // 查看数据库驱动名字
    qDebug()<<QSqlDatabase::drivers();
    // 加载驱动mysql数据库驱动
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    //本机数据库
    db.setHostName("127.0.0.1");
    db.setUserName("root");
    db.setPassword("123456");
    db.setDatabaseName("test");
    db.setPort(3306);
    if(!db.open())
    {
        qDebug()<< "服务器连接失败,请稍后重新尝试";
        return;
    }
    else
    {
        qDebug()<< "服务器连接成功,进行后续数据库增删改查操作";
        return;        
    }
    // 关闭数据库
    db.close();

总结:mysql数据库同一版本可能有32位的,也有64位的,同样的QT项目有使用Qt_5_14_2_MinGW_32_bit也有Qt_5_14_2_MinGW_64_bit编译器,需要一一对应;

MinGW_32项目对应就需要32位的libmysql.dll文件和编译出来的32位的三个libqsqlmysql.a,qsqlmysql.dll,qsqlmysql.dll.debug驱动文件。

MinGW_64项目对应的就需要64位的libmysql.dll文件和编译出来的32位的三个libqsqlmysql.a,qsqlmysql.dll,qsqlmysql.dll.debug驱动文件。

如果QT项目用到32位的第三方的驱动,如mqtt或者quazip,就会导致整个项目的编译只能选择指定的mingw32编译器来编译运行项目,不能使用64位的mysql驱动。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐