Ubuntu16下Qt5链接MySQL时出现libmysqlclient.so.18 not found 的解决方法
Ubuntu16下Qt5链接MySQL时出现libmysqlclient.so.18 => not found 的解决方法
问题背景:按照此参考博客的方法进行了Qt5与MySQL的链接时,发现新问题 libmysqlclient.so.18 => not found .
解决方法研究:阅读了一些博客 ,有的博客建议重新编译“制作”libmysqlclient.so.18,这种方法比较繁琐,我没有成功。
解决方法:
1. 打开链接 https://launchpad.net/ubuntu/xenial/amd64/libmysqlclient18/5.6.25-0ubuntu1
2.下载 libmysqlclient18_5.6.25-0ubuntu1_amd64.deb
3.安装
4.问题解决
备注:测试代码 (稍微修改了 参考博客 的代码)
#include <QCoreApplication>
#include <QDebug>
#include <QSqlQuery>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlDriver>
#include <QtSql/QSqlError>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << QCoreApplication::libraryPaths();
qDebug()<<QSqlDatabase::drivers()<<endl; /*列出qt可用的数据库*/
/*
* 链接mysql数据库
*/
QCoreApplication::addLibraryPath("/opt/Qt5.6.0/5.6/gcc_64/plugins/sqldrivers/libqsqlmysql.so");
QSqlDatabase db(QSqlDatabase::addDatabase("QMYSQL"));
db.setHostName("127.0.0.1");
db.setDatabaseName("TestDB");
db.setUserName("TestUser");
db.setPassword("123456");
if (!db.open()) /*测试数据库是否链接成功*/
{
qDebug()<<db.lastError()<<endl;
}
else
{
qDebug()<<"Ok"<<endl;
}
QSqlQuery query(db);
query.exec("create table student(id int primary key,name varchar(20))");
query.exec("insert into student values(1,'xiaogang')");
query.exec("insert into student values(2,'xiaoming')");
query.exec("insert into student values(3,'xiaohong')");
query.exec("select id,name from student where id >= 2");
while(query.next())
{
int value0 = query.value(0).toInt();
QString value1 = query.value(1).toString();
qDebug() << value0 << value1 ;
}
return 0;
}
运行结果: