开发环境: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驱动。