centos qt mysql_Centos 7 中 QT出现QSqlDatabase: MYSQL driver not load

系统版本 : Centos7

QT VERSION : 5.6

测试代码:

#include

using namespace std;

#include

#include "gui/mainwindow.h"

#include

#include

#include

#include

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()<

QStringList drivers = QSqlDatabase::drivers();

foreach(QString driver, drivers)

qDebug()<

//打开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()<

else {

qDebug()<

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值