Qt5.8 ubuntu下面连接mysql

来源:互联网 发布:mac版的炒股软件 编辑:程序博客网 时间:2024/06/12 00:19

ubuntu 下面配置QT mysql环境

这次配环境真的有点恶心我了,所以写博客,为了尽量不恶心别人
参考链接1
参开链接2
参考链接3

一 首先必须安装Qt镜像以及mysql

安装的时候qt选择全部,这样就包含源文件,后面出现问题可以自己编译文件,没有选择全部的话到上面地址中下载对应的源码,submoudle下面qtbase-src大概这样的文件

二 测试代码

如果代码能够直接运行最好不过了

#include <QApplication>#include <QMessageBox>#include <QDebug>#include <QtSql/QSqlDatabase>#include <QtSql/QSqlDriver>#include <QtSql/QSqlError>int main(int argc, char *argv[]){    QApplication a(argc, argv);    qDebug() << QCoreApplication::libraryPaths();    qDebug() << QSqlDatabase::drivers()<<endl; /*列出qt可用的数据库*/    /*     * 链接mysql数据库     */    QCoreApplication::addLibraryPath("/home/zeroxf/workspace/QT/5.8/gcc_64/plugins/sqldrivers/libqsqlmysql.so");    QSqlDatabase db(QSqlDatabase::addDatabase("QMYSQL"));    db.setHostName("127.0.0.1");    db.setDatabaseName("TestDB");    db.setUserName("root");    db.setPassword("liangxianfeng");    if (!db.open()) /*测试数据库是否链接成功*/    {       QMessageBox::critical(0, QObject::tr("Databse Error"), db.lastError().text());       qDebug() << db.lastError() << endl;    }    else    {       qDebug() << "Ok" << endl;    }    return 0;}

正确运行结果,如果正确了,那就皆大欢喜,跳过以下所有步骤

(“QSQLITE”, “QMYSQL”, “QMYSQL3”, “QPSQL”, “QPSQL7”)
Ok

失败结果

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QPSQL QPSQL7
QSqlError(“”, “Driver not loaded”, “Driver not loaded”)

三 重新编译libqsqlmysql.so

到Qt5.8.0/5.8/gcc_64/plugins/sqldrivers,(你的对应安装目录)下面,运行下面命令

ldd libqsqlmysql.so

你会发现

xx.so =>> not found

这里就是说库文件存在依赖问题,需要自己编译

cd ~/Qt5.8.0/5.8/Src/qtbase/src/plugins/sqldrivers/mysql
qmake “INCLUDEPATH+=/usr/include/” “LIBS+=-L/usr/lib/ -lmysqlclient” mysql.pro
make
cp libqsqlmysql.so ~/Qt5.8.0/5.8/gcc_64/plugins/sqldrivers

includepath就是mysql.h的位置,以及libs是mysqlclient.so的位置,好像有的人会是mysqlclient_r,这里依照你那里命名的,自己改或者用ls -s 弄个映射

我遇到的问题

make 找不到mysql.h

首先sudo find / -name mysql.h,能找到的话就添加到includepath,不能的话就安装libmysqlclient-dev

sudo apt-get install libmysqlclient-dev

make 找不到qsqlerror.h

如果还报找不到qsqlerror.h,那么可能是你在用qt4的qmake编译,这里就需要修改环境变量了,参考链接

usr/bin/ld: cannot find -lxxx

我这里缺少

libssl.so.10 => not found
libcrypto.so.10 => not found

那么这里很可能是这个库文件没有安装,或者路径设置问题,那么先去看是否安装或者find查找,参考链接