QT连接Mysql的问题

1.直接连接

在main函数中写入:

其中引入库 QSqlDatabase, QDebug。 

数据库名是已经在mysql中建好的数据库。用户名和密码是数据库对应的。

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setDatabaseName("数据库名");
    db.setUserName("用户名");
    db.setPassword("密码");
    bool ok = db.open();
    if (ok){
        QMessageBox::information(this, "infor", "success");
    }
    else {
        QMessageBox::information(this, "infor", "open failed");
        qDebug()<<"error open database because"<<db.lastError().text();
    }

在.pro文件中加

QT += sql

2.driver not loaded

2.1 查看是否有QMYSQL

//输出可用数据库
    qDebug()<<"available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
        qDebug()<<driver;

在这里插入图片描述

2.2.1 有,使用ODBC/connector

 下载地址: MySQL :: Download Connector/ODBC

下载和QT同位的版本,如QT是Mingw32,则下载32位

下载时一直点击next即可。下载完之后在菜单中找到ODBC数据源

 

添加DSN,选择ANSI.

 上面两个随意,填好用户名,密码和要连接的数据库(之前创建好)

 

 代码修改成QODBC

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setDatabaseName("是你在ODBC中创建的Data source name");
    db.setUserName("用户名");
    db.setPassword("密码");
    bool ok = db.open();
    if (ok){
        QMessageBox::information(this, "infor", "success");
    }
    else {
        QMessageBox::information(this, "infor", "open failed");
        qDebug()<<"error open database because"<<db.lastError().text();
    }

2.2.2 【或者】使用connector/C

MySQL :: Download MySQL Connector/C (Archived Versions)

下载和mysql相同位的版本,虽然不知道为什么我下的32位也可以。

解压后,将lib文件夹中的libmysql.dll与libmysql.lib复制到QT安装路径中的mingw53_32文件夹中;

连接代码不用改

3. SSL connection error

SSL connection error:ERROR 2026 (HY000): SSL connection error: unknown error number

 cd 到mysql/bin中,登陆Mysql

mysql -u root -p

 查看ssl情况

SHOW VARIABLES LIKE '%ssl%';

Have_ssl =YES

 现在关闭SSL。

 在program data(隐藏文件)中找到MYSQL->MYSQL server中的my.ini

 在[mysqld]下面加入 skip_ssl

C盘的文件修改不了可以把他拖到桌面再改,再拖到C盘

4. caching_sha2_password

"Authentication plugin 'caching_sha2_password' cannot be loaded: 找不到指定的模块。\r\nQMYSQL: Unable to connect"

 改完SSL,又出现这个问题,原因是这个加密规则太高级了

重新登陆mysql发现密码过不了了,所以要调整修改顺序,先把my.ini改回来。再成功登录。

查看用户密码规则

use mysql;
select user, host, plugin from user;

在这里插入图片描述

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '替换成你的密码';

‘root’是你的user名,‘%’是你的host名,自行替换。

改完之后检查:

select user, host, plugin from user;

在这里插入图片描述

最后

 最后,终于成功连接呜呜。

感谢

ODBC: (34条消息) QT连接Mysql数据库(详细成功版)_普通网友的博客-CSDN博客_qt和mysql安装在不同的盘可以连上吗

connector/c: QT连接数据库,出现Driver not loaded Driver not loaded的问题的解决办法_qt_lyj_c-DevPress官方社区 (csdn.net)

ssl: ‘​​​​​​SSL connection error:unknown error number‘问题解决 - 知乎 (zhihu.com)

chaching:MySQL 连接出现 Authentication plugin ‘caching_sha2_password‘ cannot be loaded 的解决_mysql_单手入天象-DevPress官方社区 (csdn.net)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值