专栏首页开发与安全ubuntu下安装qt 的mysql 驱动遇到的问题

ubuntu下安装qt 的mysql 驱动遇到的问题

参照网上教程,做的过程遇到很多问题,记下.

1.首先我将软件中心搜到的mysql server和客户端都装上了.

2.sudo apt-get install libmysqlclient18 libmysqlclient-dev libmysqld-dev

3.参照qt creater的帮助,搜sql可以找到database driver字样

How to Build the QMYSQL Plugin on Unix and Mac OS X

You need the MySQL header files and as well as the shared librarylibmysqlclient.so. Depending on your Linux distribution you may need to install a package which is usually called "mysql-devel".

Tell qmake where to find the MySQL header files and shared libraries (here it is assumed that MySQL is installed in /usr/local) and runmake:

cd $QTDIR/src/plugins/sqldrivers/mysql qmake "INCLUDEPATH+=/usr/local/include" "LIBS+=-L/usr/local/lib -lmysqlclient_r" mysql.pro make

After installing Qt, as described in the Installing Qt for X11 Platformsdocument, you also need to install the plugin in the standard location:

cd $QTDIR/src/plugins/sqldrivers/mysql make install

于是 cd ~/work/Qt&Opencv_src/qt-everywhere-opensource-src-4.8.3/src/plugins/sqldrivers/mysql

qmake "INCLUDEPATH+=/usr/include/mysql"  "LIBS+=-L/usr/lib/mysql/plugin -lmysqlclient_r" mysql.pro  

出现错误:Failure to read QMAKESPEC conf file  qt-everywhere-opensource-src-4.8.3/mkspecs/linux-g++/ qmake.conf

我就觉得很奇怪,因为我已经设置了环境变量,并且测试过可以编译成功,这时发现 qmake读取的不是mkspecs/linux-g++/ qmake.conf(qt库安装路径的qmake.conf),而是源码包的配置文件,于是在 ~/.profile添加一句

 export QMAKESPEC=$QTDIR/mkspecs/linux-g++

这下可没错了.而接下去make的时候又出错了

main.cpp:42:30: fatal error: qsqldriverplugin.h: No such file or directory

搜遍所有地方确实没有那个头文件,于是意识到了,也许是因为我的mysql server是软件中心安装,而不是源码包编译安装,很多东西包括头文件之类都没装上.因为make出错,接下去就不能进行make install,也就不会产生所说的libqsqlmysql.so

咋办呢,要么remove mysql相关东西并重新编译安装.

搜着搜着,又有人说可以直接sudo apt-get install libqt4-sql-mysql  或者本来这东西就已经随系统安装了,然后将libqsqlmysql.so复制一份到$QTDIR/plugins/sqldrivers/ 下面,但在/usr/lib/qt4目录下却没找到这个动态库,直接find,发现居然存在于

/usr/lib/i386-linux-gnu/qt4/plugins/sqldrivers/libqsqlmysql.so 接下去的就不用我多说了吧.

做个demo测试一下,建立控制台程序,记得在pro文件中 QT +=那里加上sql,否则qmake是不会去找sql的相关部分的。先在mysql建立一个study数据库。

#include <QtCore/QCoreApplication>
#include <QDebug>
#include <QSqlDatabase>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("study");
    db.setUserName("root");
    db.setPassword("666666");
    if(!db.open())
    {
        qDebug() << "Unable to open database";
    }
    else
    {
        qDebug() << "Database connection established";
    }
    return a.exec();
}

输出如图:

终于成功了,yeah~~~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mysql数据库学习(四):常用Mysql C API 介绍和使用、封装一个访问Mysql数据库的类MysqlDB

    首先,环境是windows +  vs2008,Mysql数据库已经安装好,在使用之前,需要配置工程属性,附加包含目录添加 D:\Program Files\M...

    s1mba
  • dsp builder 11.0 使用过程中产生的问题及解决方案

    在matlab R2011b command窗口下,输入以下命令 >>  dos('lmutil lmdiag C4D5_512A') lmutil - ...

    s1mba
  • linux网络编程之posix 线程(二):线程的属性和 线程特定数据 Thread-specific Data

    一、posix 线程属性 POSIX 线程库定义了线程属性对象 pthread_attr_t ,它封装了线程的创建者可以访问和修改的线程属性。主要包括如下属性:...

    s1mba
  • MySQL 在 Windows 下安装教程、避坑指南

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,2008 年被 SUN 公司收购,后 SUN 公司又被 Oracle 公司收购。

    丹枫无迹
  • 享知行·技术:Linux环境Mysql安装和踩过的那些坑

    用户4361942
  • 为什么Docker创建的MySQL容器字符乱码?

    这篇文章发布于 2016.11.03 ,记录如何解决 mysql容器查询结果乱码的问题。

    用户1560186
  • Mysql系列第十六讲 变量详解

    上面使用中介绍的,全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认为session级别。

    易兮科技
  • 玩转Mysql系列 - 第16篇:变量详解

    Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。

    路人甲Java
  • 在docker中使用MySQL数据库

    我是一直想把所有的程序都跑在docker里面,这样一方面是为了便于管理,另外一方面也可以增强自己对docker的理解,所以今天我就想学习一下最重要的数据库部分

    bboysoul
  • CentOS7 下 MySQL 5.7 重置root密码

    本文节选自《Netkiller MySQL 手札》 CentOS 7.x 添加 skip-grant-tables=1 选项,然后重启mysql # cat /...

    netkiller old

扫码关注云+社区

领取腾讯云代金券