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

来源:互联网 发布:淘宝手机店铺招牌尺寸 编辑:程序博客网 时间:2024/05/10 00:10

今天打算在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 loadedQSqlDatabase: 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的问题又解决不了。。。好吧,我自己心中的小船反正是翻了。。。

0 0