QT——连接MySQL失败解决方案

qDebug()<

QT工程里使用到了MYSQL数据库,然而运行时出现以下错误:

QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

 

这是由于QT中的MYSQL数据库插件未加载成功,这种情况一般是由两种原因引起:

第一种:无MySQL驱动

检查 Qt\5.3\msvc2013_64_opengl\plugins\sqldrivers  目录下是否有qsqlmysql.dll,如果没有,就说明Qt没有相应的mysql驱动

解决方法是:拷贝qmysql.dllplugins\sqldrivers目录下。

第二种:库支持不完善。

解决方法是:将MySQL\MySQL Server 5.7\lib下的libmysql.dll拷贝至Qt\5.3\msvc2013_64_opengl\bin下即可。

如果是 32位QT  64位MySQL

  1. 去官网下载mysql的connector/c 32位的驱动
  2. 下载完毕后,把解压目录下的libmysql.dll文件拷贝到 Qt5.2\5.2.1\mingw48_32\bin

连接MySQL数据库时会出现Authentication plugin 'caching_sha2_password' cannot be loaded的错误。

出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升
级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password. 

这里用第二种方式 ,解决方法如下

1. 修改账户密码加密规则并更新用户密码

   ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;   #修改加密规则 

   ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';   #更新一下用户的密码 

2. 刷新权限

   FLUSH PRIVILEGES;   #刷新权限 

3. 单独重置密码命令:alter user 'root'@'localhost' identified by '00000000';

你可能感兴趣的:(QT——连接MySQL失败解决方案)