QSqlDatabase: QMYSQL driver not loaded

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QSqlDatabase: QMYSQL driver not loaded相关的知识,希望对你有一定的参考价值。

QSqlDatabase: available drivers: QSQLITE Qmysql QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
上面报错QMYSQL驱动没有导入,可是下面这个这不是有吗?为什么还报错?我下载的是最新的qt5.2.1,我安装网上的去编译驱动,可为什么没有src目录,没有mysql文件夹。求指教。怎么解决。应该安装哪个版本。

qt中mysql插件相关的文件有两个动态库qsqlmysql4.dll和libmysql.dll;
qsqlmysql4.dll要放在exe目录下的\plugins\sqldrivers下。
libmysql.dll则放在exe目录下即可。
但这样做之后还是不行,后来发现libmysql.dll居然依赖vcruntime140.dll,是vs2015运行时的一个库。所以安装Microsoft Visual C++ 2015 Redistributable (x86) - 14.0.23026问题解决。
参考技术A 我也是这个问题, 已经找到解决方法,详见博客http://blog.csdn.net/tenlee/article/details/43614241

Error:QSqlDatabase: QMYSQL driver not loaded (Qt+C++ 找不到mysql的驱动)

错误描述

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

场景

使用Qt Create连接数据库时抛出错误,连接代码具体如下:

    db = QSqlDatabase::addDatabase(database.DatabaseType);//MySQL数据库
    db.setHostName(database.DatabaseIP);                // 主机名
    db.setDatabaseName(database.DatabaseName);          // 数据库名
    db.setUserName(database.DatabaseUserName);          // 连接用户名
    db.setPort(database.DatabasePort);                  // 端口号
    db.setPassword(database.DatabasePassword);          // 连接密码

    qDebug() << database.DatabaseType << database.DatabaseIP
             << database.DatabaseName << database.DatabaseUserName
             <<database.DatabasePort<<database.DatabasePassword;
    if(false == db.open())
    
       QMessageBox::warning(NULL, u8"Error",u8"账号或者密码错误!");
        exit(EXIT_FAILURE);
    

解决方案

这个是因为缺少mysql的驱动导致的,这里我们需要将libmysql.dll文件复制到qt的安装路径下。

查找libmysql.dll

如果你本地安装过mysql,那么就省事多了。直接去mysql的安装路径下:C:\\Program Files\\MySQL\\MySQL Server 5.6\\lib。这时我的路径(安装的默认路径)。
如果你没有安装mysql,那么就需要从官网下载。然后在下载的压缩包中找到libmysql.dll文件。

将libmysql.dll复制到指定路径

首先需要找到Qt的安装路径,我的路径为:D:\\Qt\\Qt5.9.9\\5.9.9。然后到图中所示路径下,可以看到有MinGW、msvc2013、msvc2015、msvc2017等,这里就是你使用的编译器。

使用MinGW编译

使用MinGW编译需要复制到MingGW路径下:D:\\Qt\\Qt5.9.9\\5.9.9\\mingw53_32\\bin,将前面找到的libmysql.dll文件复制到这里。

使用哪个编译就到哪个文件中的bin目录进行复制即可。

运行

这里我们需要切换到MinWG编译器中。

然后就可以正常登录咯。

关于Oracle的驱动问题

Oracle需要通过cmake软件手动生成,或者使用 别人生成好的。

以上是关于QSqlDatabase: QMYSQL driver not loaded的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu18.04下QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: QMYSQL driver not loaded

ubuntu下qt5和数据库连接失败,报错QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE

Error:QSqlDatabase: QMYSQL driver not loaded (Qt+C++ 找不到mysql的驱动)