Ubuntu中Qt5.3连接MySql无法加载驱动问题解决

首先说明,我的Qt安装目录为默认安装,在/opt下,在/opt/Qt5.3.2/5.3/gcc/plugins/sqldirvers中的libqsqlmysql.so文件为Qt自带,编译时会报错,所以应该编译生成该文件,并将其覆盖。以下为生成该文件步骤:

1.首先进行Qt mysql驱动所在的源码文件夹,使用命令如下:

cd /opt/Qt5.3.2/5.3/Src/qtbase/src/plugins/sqldrivers/mysql
2.此时该文件里有三个文件,使用qmake命令生成MakeFile。
此时qmake需管理员权限,如果qmake版本不匹配,则找到qmake文件所在处,使用如下命令:
/opt/Qt5.3.2/5.3/gcc/bin/qmake
3.使用make命令生成so驱动文件。
如果提示找不到mysql.h,则没有安装包libmysqlclient16-dev。
使用命令sudo apt-get install libmysqlclient16-dev安装,则生成so成功。
4.在生成文件中最后一行显示为
mv -f libqsqlmysql.so ../../../../plugins/sqldrivers/
移动到../../../../plugins/sqldrivers/目录下,将其中的so文件拷贝到/opt/Qt5.3.2/5.3/gcc/plugins/sqldirvers中。
此时使用demo程序验证数据库是否正确连接。验证代码如下:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include  
#include  

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    qDebug() << QCoreApplication::libraryPaths();
    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("mysql_test");
    db.setUserName("root");
    db.setPassword("qwer1234");
    if(!db.open()){
        qDebug()<<"Unable to open database";
    }else{
        qDebug()<<"Database connection established";
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}
记得在pro文件中添加QT       +=sql


你可能感兴趣的:(linux系统)