最近在mac下有项目须要用到qt 链接mysql,源代码以下html
#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; }
运行结果是链接失败,没法加载驱动,可用驱动列表为
mysql
("QSQLITE", "QMYSQL3", "QMYSQL", "QODBC3", "QODBC", "QPSQL7", "QPSQL")sql
个人qt为5.6.0版本,来自http://download.qt.io/
shell
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.dylibui
网上不少方案是从新qt源代码编译libqsqlmysql.dylib,我偷懒了一下,直接
this
cp /usr/local/Cellar/mysql/5.7.12/lib/libmysqlclient.20.dylib /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib
问题解决了,创建软链接也能够。debug
不知道库版本问题会不会影响性能,后续再测试
参考:
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嗷嗷叫