文档章节

Centos 7 中 QT出现QSqlDatabase: MYSQL driver not load

Michael19
 Michael19
发布于 2016/07/15 09:19
字数 633
阅读 45
收藏 0

系统版本 : Centos7  QT VERSION : 5.6

测试代码:

#include <iostream>
using namespace std;

#include <QApplication>
#include "gui/mainwindow.h"

#include <QSqlDatabase>
#include <QDebug>
#include <QSqlError>
#include <QSqlQuery>

using namespace std;

int main (int argc, char **argv) {
    //输出可用数据库
    QCoreApplication::addLibraryPath("/home/njq/dev_env/Qt5.6.0/5.6/gcc_64/plugins/sqldrivers");
    qDebug()<<"available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
        qDebug()<<driver;

    //打开MySQL
    QSqlDatabase data_base = QSqlDatabase::addDatabase("QMYSQL");
    data_base.setHostName("192.168.0.200");  //设置主机地址
    data_base.setPort(3306);  //设置端口
    data_base.setDatabaseName("alarmcenter");  //设置数据库名称
    data_base.setUserName("root");  //设置用户名
    data_base.setPassword("root");  //设置密码
    if(!data_base.open())
        qDebug()<<"failed to connect to mysql" << data_base.lastError ().text ();
    else {
        qDebug()<<"success";

        QString strSQL = "SELECT alarm_id FROM alarm;";
        QSqlQuery sql_query;
        sql_query.prepare (strSQL);
        sql_query.exec ();
        while (sql_query.next ()) {
            int id = sql_query.value (0).toInt ();
            qDebug () << id;
        }
    }
}

出现了如下的错误:

QSqlDatabase: MYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
failed to connect to mysql "Driver not loaded Driver not loaded"

查看QT的安装目录

~/dev_env/Qt5.6.0/5.6/gcc_64/plugins/sqldrivers

有一个文件:

libqsqlmysql.so

使用ldd命令检查下依赖

[xxx[@localhost](http://my.oschina.net/u/570656) sqldrivers]$ ldd libqsqlmysql.so 
    linux-vdso.so.1 =>  (0x00007ffcf65b4000)
    libmysqlclient_r.so.16 => not found
    libz.so.1 => /lib64/libz.so.1 (0x00007f452c898000)

看到 libmysqlclient_r.so.16 这个so文件的依赖没有找到 通过查找资料,发现如下解决办法 先安装MYSQL的开发环境

[njq[@localhost](http://my.oschina.net/u/570656) sqldrivers]$ sudo yum install mysql-devel

重新编译mysql驱动

[njq[@localhost](http://my.oschina.net/u/570656) mysql]$ cd ~/dev_env/Qt5.6.0/5.6/Src/qtbase/src/plugins/sqldrivers/mysql
[xxx[@localhost](http://my.oschina.net/u/570656) mysql]$ ~/dev_env/Qt5.6.0/5.6/gcc_64/bin/qmake  #因为没有配置qmake路径,所以用了全路径
[xxx[@localhost](http://my.oschina.net/u/570656) mysql]$ make

看到编译后的最后一行

mv -f libqsqlmysql.so ../../../../plugins/sqldrivers/

把这个生成的libqsqlmysql.so覆盖到……./Qt5.6.0/5.6/gcc_64/plugins/sqldrivers

[xxx@localhost sqldrivers]$ mv libqsqlmysql.so ~/dev_env/Qt5.6.0/5.6/gcc_64/plugins/sqldrivers/

然后再查看libqsqlmysql.so的依赖

[xxx@localhost sqldrivers]$ ldd libqsqlmysql.so 
    linux-vdso.so.1 =>  (0x00007fffc437c000)
    libmysqlclient.so.18 => /usr/lib64/mysql/libmysqlclient.so.18 (0x00007f3de67bc000)
    libz.so.1 => /lib64/libz.so.1 (0x00007f3de65a5000)
    libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f3de636e000)
    libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f3de6155000)
    libssl.so.10 => /lib64/libssl.so.10 (0x00007f3de5ee7000)
    libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f3de5aff000)
    libQt5Sql.so.5 => not found
    libQt5Core.so.5 => not found
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3de58e2000)
    libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f3de55da000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f3de52d7000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f3de50c1000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f3de4d00000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f3de4afb000)
    libfreebl3.so => /lib64/libfreebl3.so (0x00007f3de48f8000)
    libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f3de46ac000)
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f3de43c6000)
    libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f3de41c2000)
    libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f3de3f90000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f3de6ee3000)
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f3de3d80000)
    libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f3de3b7c000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f3de3962000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f3de373c000)
    libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f3de34db000)
    liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f3de32b5000)

看到问题已经搞定

重新运行程序,看到如下结果

available drivers:
"QSQLITE"
"QMYSQL"
"QMYSQL3"
"QPSQL"
"QPSQL7"
success
171118
171119
171120
171121
171122
171123
171124
171125
171126
171127
171128
171129
171130
171131
171132
171133
171134
171135
171136

© 著作权归作者所有

共有 人打赏支持
Michael19
粉丝 0
博文 1
码字总数 633
作品 0
杭州
私信 提问
Ubuntu12.04下使用QT4.8连接MySQL找不到驱动

运行QT程序显示: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE 于是百度了下,大多数说缺少 libqt4-sql-mysql sudo apt-get install libqt4-sql-mys......

流年逝水
2014/06/29
417
2
用Qt Creator编程连接数据库的问题:QMYSQL driver not loaded

刚入手QT没多久,在连接 数据库时遇到一 问题。 代码如下: 然后 编译老是报错: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE build error! 但 mysq...

lee.qiao
2012/05/04
3.4K
0
【问题解决】QSqlDatabase: QMYSQL driver not loaded

使用QT的QSqlDatabase操作数据库的时候提示一下信息 QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7 确保有libqsqlmysql.......

陈昊Sevens
2014/03/19
0
0
运维调试记录:QSqlDatabase: QMYSQL driver not loaded

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaobryant/article/details/42971003 在Qt 5.3中使用数据库连接时,弹出下面的错误: 从上面的错误可以看出,...

adoryn
2015/01/21
0
0
在Qt4中使用MySQL4.1及其以上版本中的中文问题解决方法

MySQL4.1及其以上版本中中文问题比较麻烦,有时候在QT中使用会出现问号或者乱码,现在说明一下在Qt中如何正确地配合使用。 先在MySQL中建表,使用中文,一般情况下就两种,GB(GB2312或者GBK...

鉴客
2010/09/09
237
1

没有更多内容

加载失败,请刷新页面

加载更多

Pages Manager——可本地管理Pages服务内容,一键生成漂亮的文档界面。

Pages Manager Git地址 可本地管理Pages服务内容,一键生成漂亮的文档界面。在线预览 简单、轻便,无需安装数据库。 框架:spring-boot 数据库:sqlite 原理 本地维护一组markdown文档 将mar...

tanghc
14分钟前
0
0
基础目标检测算法介绍:CNN、RCNN、Fast RCNN和Faster RCNN

每次丢了东西,我们都希望有一种方法能快速定位出失物。现在,目标检测算法或许能做到。目标检测的用途遍布多个行业,从安防监控,到智慧城市中的实时交通监测。简单来说,这些技术背后都是强...

AI女神
15分钟前
0
0
哪有什么互联网寒冬?只是你穿的少而已!

声明:本文由终端研发部原创发布,未经允许,不得转载 前言 最近一段时间,大家都在说一些大公司纷纷裁员, 优化公司内部的组织架构。面对如此的寒冬变化,很多人在迷茫,在焦虑,在担忧自己...

终端研发部
20分钟前
0
0
nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)

Nginx 启动时报错:nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory) 原因:系统重启 /var/run/ 目录下文件会清空。 方法一: # sudo nginx -c /etc/ngi......

驛路梨花醉美
22分钟前
1
0
TiDB 源码阅读系列文章(二十四)TiDB Binlog 源码解析

作者:姚维 TiDB Binlog Overview 这篇文章不是讲 TiDB Binlog 组件的源码,而是讲 TiDB 在执行 DML/DDL 语句过程中,如何将 Binlog 数据 发送给 TiDB Binlog 集群的 Pump 组件。目前 TiDB 在...

TiDB
35分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部