最近在mac下有项目需要用到qt 连接mysql,源代码如下
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtSql>
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSqlDatabase data_base = QSqlDatabase::addDatabase("QMYSQL");
//设置主机地址
data_base.setHostName("localhost");
//设置端口
data_base.setPort(3306);
//设置数据库名称
data_base.setDatabaseName("db");
//设置用户名
data_base.setUserName("uuuu");
//设置密码
data_base.setPassword("pppp");
if(!data_base.open())
qDebug()<<"failed to connect to mysql";
else
qDebug()<<"success connected";
}
MainWindow::~MainWindow()
{
delete ui;
}
运行结果是连接失败,无法加载驱动,可用驱动列表为
("QSQLITE", "QMYSQL3", "QMYSQL", "QODBC3", "QODBC", "QPSQL7", "QPSQL")
我的qt为5.6.0版本,来自http://download.qt.io/
mysql为5.7 通过 brew install mysql 安装
上网查了一些资料,返现qt里sqldriver目录下的libqsqlmysql.dylib
指向了一个奇怪mysql位置
就是这个:/opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib
实际上应该:/usr/local/Cellar/mysql/5.7.12/lib/libmysqlclient.20.dylib
网上很多方案是重新qt源代码编译libqsqlmysql.dylib,我偷懒了一下,直接
cp /usr/local/Cellar/mysql/5.7.12/lib/libmysqlclient.20.dylib /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib
问题解决了,建立软连接也可以。
不知道库版本问题会不会影响性能,后续再测试
参考:
http://stackoverflow.com/questions/7579212/mysql-for-qt-on-mac
http://qtdebug.com/DB-AccessMySQL.html
!!ps,如果重新libqsqlmysql.dylib
,请只编译哪个mysql.pro
千万不要用
brew install qt5 --with-mysql
编译了一晚上还没有结束,cpu嗷嗷叫