您的位置:首页 > 编程语言 > Qt开发

Mac+QT中使用mysql的一些问题

2016-05-11 20:03 549 查看
今天打算在qt中用mysql,在网上搜了一下,大致就是需要在文件中引用这个:

#include <QtSql>


并且要在项目的.pro中添加如下代码。

QT += sql


可是我照着做了,并且写下了如下连接mysql数据库的代码:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");    //数据库主机名
db.setDatabaseName("xxxxxxx");    //数据库名
db.setUserName("root");        //数据库用户名
db.setPassword("root");        //数据库密码
db.open();          //打开数据库连接


可是会报错:

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7


在网上搜了一大堆相关的资料,比如将Qt下的sqldrivers文件夹添加到项目运行的文件中,对于我,即这个路径的文件添加进去:/Users/XFade/Qt5.4.2/5.4/clang_64/plugins/sqldrivers,可是并没有解决问题;

后来又看到了说要自己去重新编译mysql驱动,即.dylib文件,放到sqldrivers文件里面。我看了看不是很懂,所以没有那样做;不知道是不是真的能够解决。

后来我看到了一解决方案,点此查看,在这个里面,作者写道:

Qt 访问 MySQL 需要 2 个动态链接库文件,一个是 Qt 自己的 MySQL 驱动插件,另一个是 MySQL 提供的动态链接库,缺一不可。在程序里指定要访问的数据库为 MySQL,Qt 会自动的加载 MySQL 驱动插件,其实现依赖于MySQL 的动态链接库访问 MySQL。

这才有点领悟,于是我按照作者的步骤去做了,发现果然是那样

找不到 /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib

可是这时我突然发现,它里面说的那个libmysqlclient.18.dylib文件,我没有,倒是在/usr/local/mysql-5.7.12-osx10.11-x86_64/include/目录(这是我本机的mysql安装目录)下有一个libmysqlclient.20.dylib;

我想起了以前电脑上装过xampp,后来卸了,貌似里面有libmysqlclient.18.dylib,于是我又重装了一遍xampp(强迫症的我真的不想在电脑上装两个mysql,想想都有点不舒服,不过为了解决问题,没办法),然后把里面的那个拷贝过来放在上面opt…的那个目录下。

这时再运行,发现又报了一个非常呕心的错:

Connect to MySql error:  "Can't connect to local MySQL server through socket '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' (2) QMYSQL: Unable to connect"


这时我又凌乱了,这个问题以前遇见过,一直不知道如何解决,后来搜了一下,原来是数据库的连接有两种方式,一种是sock,还有一种是TCP/IP,于是我把db.setHostName(“localhost”)改成了db.setHostName(“127.0.0.1”),再次运行,居然成功了!

虽然解决了这个问题,但是关于xampp我一直也很困惑,不知道从什么时候起,那个mysql就再也启动不了了



而且在terminal中运行



也会报那个sock错误,真是无语极了,因为没装xampp时,可以通过/usr/local/mysql-5.7.12-osx10.11-x86_64/这个mysql进得去,可是不装xampp,QT的问题又解决不了。。。好吧,我自己心中的小船反正是翻了。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: