一、开发环境
QT6.6.0
Mysql8.0.36 官网下载地址 https://dev.mysql.com/downloads/
使用mingw x64编译环境 和Mysql保持一致
二、编译mysql驱动
1.报错信息:QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMIMER QMARIADB QODBC QPSQL
原因:QT6.6.0安装后不支持mysql,需要下载源码自己编译qmysql驱动
如果没有下载源码,可以从官网下载指定组件,不需要下载所有源码https://download.qt.io/archive/qt/6.6/6.6.0/submodules/
解压后使用QT加载qtbase-everywhere-src-6.6.0\src\plugins\sqldrivers目录下的cmakeList文件即可
找到安装mysql-server下的include和lib目录
复制这两个文件夹到工程目录,然后在刚才qt打开的工程里修改.camke.conf文件内容
set(QT_REPO_MODULE_VERSION "6.6.0")
SET(FEATURE_sql_mysql ON)
SET(MySQL_INCLUDE_DIR "拷贝路径/include")
SET(MySQL_LIBRARY "拷贝路径/lib/libmysql.lib")
将拷贝路径替换成你刚才复制mysql的include和lib目录。
再点击项目进行构建。
可以在构建目录plugins\sqldrivers找到构建的库文件
到这,qt的mysql的驱动文件就构建完了
三、使用连接mysql
1.将刚才生成的qsqlmysql.dll文件拷贝至安装QT编译环境的plugins\sqldrivers目录
2.拷贝安装的mysql-server下lib目录的libmysql.dll和libmysql.lib文件至QT编译器的bin目录
一般到这就结束了,但是由于数据库的版本和qt版本间差异的原因,此时直接运行程序会依然报错。
可以从图中看到,明明已经有了QMYSQL的驱动,但是无法加载。
到这里需要使用mysql Connector/C++ 的两个库
我没有安装 Connector/C++,只需要直接下载 Connector/C++的zip包从里面拷贝出libcrypto-3-x64.dll和libssl-3-x64.dll这两个库。
将这两个库拷贝到我们自己程序构建的目录即可。
再次构建运行程序,可以正常使用连接mysql了。