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 条评论
登录 后参与评论

相关文章

来自专栏DannyHoo的专栏

错误——持续更新

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

991
来自专栏Ryan Miao

Linux文件属性,权限和修改文件权限,所属者和所属组

剩下的三组主要由[rwx]组成,r-read, w-write, x-execute, [-]表示占位符,即没权限。

813
来自专栏水击三千

The connection to adb is down, and a severe error has occured

相信不少同学和我一样遇到这个问题,有时候搞的还要重启电脑,那究竟是什么原因导致的呢,很明显,你的端口被占用了,那下面给出终极解决方案: 一、首先描述症状,如下图...

24010
来自专栏IT笔记

Python3+Django2配置后台管理

使用 Django 我们只需要做一些配置,就可以实现简单的后台管理系统,下面我们以新闻系统为例子来搭建后台。

584
来自专栏phodal

React、Vue、Ember 及其他前端开发者,请暂缓更新到 Chrome 59 浏览器

昨天下午休息的时候,发现我工作用的 Mac Mini 在疯狂地散热中,打开 Activity Manger 发现是 Chrome 浏览器导致的,再打开 Chro...

18410
来自专栏DeveWork

【DeveMobile实例】利用Mobile Detect 制作单独移动端页面项目

Mobile Detect 这个PHP 类库Jeff 很早就运用到实际项目中了,如Devework 主题,移动主题、DW Mobile Swither及最近的D...

1786
来自专栏weixuqin 的专栏

Django 学习:为窗体加上防机器人的验证机制(验证码功能)

844
来自专栏偏前端工程师的驿站

CentOS6.5菜鸟之旅:中文编辑器忍痛放弃Sublime

一、前言                                 Windows下习惯使用Sublime作为编辑器,谁知道Linux下的Sublime是...

1776
来自专栏漫漫全栈路

Ubuntu下安装Nginx+PHP+MySql环境

写在之前: 之前腾讯云线下推广的时候给同学们讲过一趟基于ubuntu系统安装WordPress搭建自己的个人博客的课程。最近刚好有个朋友想要学习下ubuntu系...

4616
来自专栏绿巨人专栏

Scala on Visual Studio Code

2988

扫码关注云+社区