首先说明,我的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/qmake3.使用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程序验证数据库是否正确连接。验证代码如下:记得在pro文件中添加QT +=sql#include "mainwindow.h" #include "ui_mainwindow.h" #include <qdebug.h> #include <QSqlDatabase> 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; }