Qt连接Mysql8.2从安装到QMYSQL driver not loaded问题解决(详细!详细!详细!)

发布时间:2023年12月22日

一、Mysql下载

下载路径:链接: link
在这里插入图片描述
在这里插入图片描述

二、Mysql安装

默认安装
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
这一步,设置一个自己能记住的密码!!这里设置为:123456
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、配置环境变量

按下Windows键,输入“环境变量”,搜索到“编辑系统环境变量”,点击
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、Mysql连接测试

  1. 以管理员身份运行打开命令行(如下图所示),必须以管理员身份,由于后续部分命令需要权限,会出现错误!(按下Windows键,输入cmd)
    在这里插入图片描述
  2. 输入mysql -u root -p,输入密码,密码为安装时设置的root密码:123456,如果和下图所示一样,则说明你的mysql已经连接成功!
    在这里插入图片描述
  3. 输入alter user ‘root’@‘localhost’ identified by ‘000000’;为修改密码,将初始设置的密码“123456”改为“000000”。

五、安装MySQL Workbench可视化软件

  1. 下载地址:链接: link
    在这里插入图片描述
    在这里插入图片描述
  2. 双击mysql-workbench-community-8.0.34-winx64.msi文件进行默认安装安装。
  3. 汉化(菜单栏)
    网上找一个翻译的main_menu.xml文件替换到MySQL Workbench安装目录的data文件夹下。
    在这里插入图片描述
    在这里插入图片描述
  4. 打开MySQL Workbench。
    在这里插入图片描述
  5. 创建一个数据库,通过sql语句或者手动创建都可以,我这里创建一个weinspectdb的数据库。
    sql语句创建:
    在这里插入图片描述
    手动创建:
    在这里插入图片描述

六、QT连接MySQL失败(报QMYSQL driver not loaded)

报错结果:

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3

报错原因:

缺少MySQL驱动(qsqlmysql.dll,qsqlmysql.dll)
有时候有驱动但缺少库(libmysql.lib)

解决方法:

方式1、不推荐

  1. 需要 qsqlmysql.dll,qsqlmysql.dll,libmysql.lib这三个文件,不同版本的MySql里面包含不同的libmysql.dll, 不同的libmysql.dll必须和配套的qsqlmysqld.dll qsqlmysql.dll一起才能正常工作。
  2. qsqlmysqld.dll qsqlmysql.dll拷贝到Qt安装目录下的\plugins\sqldrivers中,MySql安装目录下找到libmysql.dll复制到Qt安装目录下的msvc2019_64\bin文件夹中。
  3. 这种方式有个问题是,qsqlmysql.dll,qsqlmysql.dll驱动在Qt5.12.0以后的版本不再提供,需要自己通过源码编译,找对应的版本又很困难,而且复制来复制去很麻烦,所以可以考虑第二种方式。

方式2、推荐

  1. 下载ODBC(作用类似于中间件,作为连接 qt 与 Mysql 之间的桥梁)
    下载地址 链接: link
    在这里插入图片描述
    在这里插入图片描述
    下载完默认安装即可。
  2. ODBC配置
    按下Windows键,输入“ODBC”,搜索到“ODBC数据源(64位)”,点击
    在这里插入图片描述
    在这里插入图片描述
    默认的连接名为:localhost_3306,Database选择已经创建好的weinspectdb数据库。
    在这里插入图片描述
    在这里插入图片描述

七、连接代码

QSqlDatabase sqldb = QSqlDatabase::addDatabase("QODBC");//连接数据库的类型使用QODBC,因为是通过ODBC进行连接的
sqldb.setHostName("127.0.0.1");//使用localhost也可以
sqldb.setDatabaseName("localhost_3306");//数据库名称使用localhost_3306连接名或创建的weinspectdb数据库名称都可以
sqldb.setUserName("root");
sqldb.setPassword("123456");//安装mysql设置的密码
sqldb.setPort(3306);//端口号
if (!sqldb.open()) 
{
	qDebug() << "Failed to connect to database:" << db.lastError().text();
    spdlog::error("sqldb open failed");
    return;
}
文章来源:https://blog.csdn.net/weixin_42326676/article/details/135078433
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。