Qt Creator 5.9.4連接MySQL 8.0.19的方法(已解決)

由於要在Qt上做數據庫的相關開發,需要連接MySQL,但是遇到了【driver not load】的錯誤,查閱相關資料後,解決了錯誤。以下是我總結的步驟,有需要的朋友們可以參考(避免走彎路):
起初,我是寫好代碼後,會報錯:driver not load,是因爲Qt本身缺少一個文件。
1.首先明確自己裝的MySQL的版本與Qt版本:
step1.以管理員身份運行:
在這裏插入圖片描述
輸入【mysql -V】查看到我的MySQL是64位的:
在這裏插入圖片描述
step2. 確定Qt是32位的:
打開任務管理器,Qt後邊括號裏寫32就代表是32位的。
在這裏插入圖片描述
2. 32位Qt連接64位MySQL
我的MySQL是zip版的,打開安裝目錄,找到libmysql.dll,然後複製,拷貝到qt安裝目錄下的bin目錄裏:
在這裏插入圖片描述
!!!但是,會報錯:driver not load,是因爲32位的Qt用了64位的libmysql.dll,當然會出錯。這時,需要32位的libmysql.dll,因爲網上這個真的很難找,需要的可以拿走:https://pan.baidu.com/s/1NJTI5zu5nwnpWN6yUfwl3A
提取碼:pbpp
step1.下好這個.dll文件後,拷貝粘貼到qt安裝目錄下的bin裏:
在這裏插入圖片描述
這時,編譯運行後,還是會報錯:
在這裏插入圖片描述
這是因爲:我使用的MySQL是8.0版本的,而我提供的.dll是5.x版本的,8.0版本所使用的驗證方式和5.X的不一樣,查看驗證方式:
在這裏插入圖片描述
我們需要把8.x版本的【caching_sha2_password】改爲5.x的驗證方式【mysql_native_password】,輸入命令:alter user ‘root’@’%’ identified with mysql_native_password by ‘新密碼’;如下圖:
在這裏插入圖片描述
還需要在MySQL的安裝目錄下修改my.ini文件:
在這裏插入圖片描述
在文件的[mysqld]下里加上:default_authentication_plugin=mysql_native_password
在這裏插入圖片描述
重新登錄,即可。

最後,附上測試代碼:
(需要在.pro文件裏有這句話:QT += core gui sql)

#include "widget.h"
#include "ui_widget.h"
#include <QtSql/QSqlDatabase>
#include <QDebug>
#include <QMessageBox>
#include <QSqlError>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    //打印Qt支持的數據庫驅動
    qDebug()<<QSqlDatabase::drivers();

    //添加MySQL數據庫
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    //連接數據庫
    db.setHostName("127.0.0.1"); //數據庫服務器IP,127.0.0.1表示本機
    db.setUserName("root");  //數據庫用戶名
    db.setPassword("你的密碼"); //“你的密碼”是自己登錄mysql的密碼
    db.setDatabaseName("mysql"); //數據庫名字

    //打開數據庫
    if( !db.open())
    {
        QMessageBox::warning(this, "打開失敗",db.lastError().text());
        return;
    }
    else
    {
       qDebug()<<"連接成功!!!";
        return;
    }

}

Widget::~Widget()
{
    delete ui;
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章