Mac+QT中使用mysql的一些问题
2016-05-11 20:03
549 查看
今天打算在qt中用mysql,在网上搜了一下,大致就是需要在文件中引用这个:
并且要在项目的.pro中添加如下代码。
可是我照着做了,并且写下了如下连接mysql数据库的代码:
可是会报错:
在网上搜了一大堆相关的资料,比如将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…的那个目录下。
这时再运行,发现又报了一个非常呕心的错:
这时我又凌乱了,这个问题以前遇见过,一直不知道如何解决,后来搜了一下,原来是数据库的连接有两种方式,一种是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的问题又解决不了。。。好吧,我自己心中的小船反正是翻了。。。
#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的问题又解决不了。。。好吧,我自己心中的小船反正是翻了。。。
相关文章推荐
- QT绘图应用:QT绘制一个盒图
- [置顶] Qt Data Visualization 安装教程
- Qt中的json解析和处理 (使用的是qt5 版本)
- Activemq mqtt 点对点聊天实现
- Qt通过api获取天气信息
- QT画图教程7:QT中写文字以及QT中int型转为QString类型
- Qt QTableWidget 最后一览自适应宽度 、QTableWidgetItem 文字 居中对其、 显示中文
- QT高级运用之粒子模拟(Particle Simulations)
- QT报错Error processing
- GB2312、GBK和UTF-8三种编码以及QT中文显示乱码问题
- QT中PRO文件写法的详细介绍
- Qt简单编程--编译后exe文件的图标
- 如何在vs2010+qt的release模式下生成pdb文件
- MYSQL的安装以及QT与MYSQL的连接
- cygwin -qt 编译相关
- QT 显示动态gif图片 (release版)
- ubuntu下qt编译显示Cannot connect creator comm socket /tmp/qt_temp.xxx/stub-socket的解决办法
- QT运行exe时出现“could not find or load the QT platform plugin windows”问题的解决办法
- Qt之打包发布(NSIS详解)
- UBuntu14.04下安装和卸载Qt5.3.1