qt6没有mysql驱动,需要自己编译,那是相当之坑啊。
qt6的mysql驱动编译源码中,没有pro,只能用cmake进行编译
但是用了cmake-gui.exe使用了mingw和vs环境进行编译都编译失败
后来坑了一整天,终于搞定了,现分享给大家。
1. 下载qt6.4.2已经编译好的lib,并复制到相应位置
我用的是mysql8.0
使用这个链接下载(如果不是6.4.2,你可以自己在github上搜索相应的版本进行下载)
Release QMYSQL driver 6.4.2 · thecodemonkey86/qt_mysql_driver · GitHub
下载完解压缩后:
将libcrypto-1_1-x64.dll,libmysql.dll,libssl-1_1-x64.dll这3个文件复制到D:\Qt\6.4.2\mingw_64\bin文件夹中
再将解压缩后中的sqldrivers的两个mysql驱动文件复制到D:\Qt\6.4.2\mingw_64\plugins\sqldrivers中
2. 代码调整
在你自己工程源码的cmakelists中
调整这行find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Sql),其实就是加了Sql这三个字符
加入另一行target_link_libraries(test_mysql PRIVATE Qt${QT_VERSION_MAJOR}::Sql)
然后在自己工程的cpp文件中加入
#include<QSqlDatabase>
#include<QDebug>
void MainWindow::on_pushButton_clicked()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1"); //连接本地主机
db.setPort(3306);
db.setDatabaseName("db_name");
db.setUserName("root");
db.setPassword("root");
bool ok = db.open();
if (ok){
qDebug() << "link success";
}
else {
qDebug() << "link failed";
}
}
测试输出link success,连接成功。
坑死我也,,,希望大家在这个坑点节省时间