概述
- 引言
- 解决
- 方法1 重新编译libqsqlmysqldylib
- 方法2重新链接libmysqlclient库的路径
- Tips
-
- 添加环境变量后才能用qmake
- Qt操作MySQL数据库前要先创建数据库
- 谨慎使用brew install qt5 --with-mysql
- 配置中添加Qt版本
-
- 参考
引言
macOS+Qt5.9+MySQL5.7.17连接数据库报错如下:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
解决
方法1. 重新编译libqsqlmysql.dylib
查看QtAssisitant,章节How to Build the QMYSQL Plugin on Unix and macOS中提到:
cd $QTDIR/qtbase/src/plugins/sqldrivers/mysql
qmake "INCLUDEPATH+=/usr/local/include" "LIBS+=-L/usr/local/lib -lmysqlclient_r" mysql.pro
make
具体到我的路径如下:
$ cd ~/Qt/5.9/Src/qtbase/src/plugins/sqldrivers/mysql
$ qmake "INCLUDEPATH+=/usr/local/mysql/include" "LIBS+=-L/usr/local/mysql/lib -lmysqlclient_r" mysql.pro
$ make
但是执行make时报错如下,网上有同样问题,最后brew install qt5 --with-mysql
重装Qt和MySQL才解决
ld: library not found for -lmysqlclient_r
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [../../../../plugins/sqldrivers/libqsqlmysql.dylib] Error 1
make: *** [release-all] Error 2
方法2.重新链接libmysqlclient库的路径
发现在Qt文件中sqldriver目录下libqsqlmysql.dylib默认指向Mysql文件的位置不对。
$ cd ~/Qt/5.9/clang_64/plugins/sqldrivers
$ otool -L libqsqlmysql.dylib
libqsqlmysql.dylib:
libqsqlmysql.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/QtSql.framework/Versions/5/QtSql (compatibility version 5.9.0, current version 5.9.0)
@rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.9.0, current version 5.9.0)
/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
/opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)#这一行
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
查看我的MySQL实际路径为/usr/local/mysql/lib/libmysqlclient.20.dylib
于是将Qt默认指向位置和正确的指向位置之间建立一个软连接,将它们连接起来。
在默认指向的位置建好相应的文件夹
$ sudo mkdir -p /opt/local/lib/mysql55/mysql/
建立软连接
$ sudo ln -s /usr/local/mysql/lib/libmysqlclient.20.dylib /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib
解决问题!
Tips
1.添加环境变量后才能用qmake
vim ~/.bash_profile
export PATH=$PATH:/Users/millet/Qt/5.9/clang_64/bin
2.Qt操作MySQL数据库前要先创建数据库
QT只能连接mysql里面已有的数据库,然后才能创建数据库表等。
创建mysql数据库需要在mysql里面操作,或者用mysql的可视化工具操作,
或者先不执行db.setDatabaseName("mydata");
,仅连接open数据库,然后利用 QSqlQuery查询语句create database mydata;
去创建数据库,使用数据库。
3.谨慎使用brew install qt5 --with-mysql
我个人使用 brew install qt5 --with-mysql
重装Qt和MySQL,安装持续了108min,期间电脑风扇狂转。
4.配置中添加Qt版本
若qmake路径是无法直接访问的隐藏路径,可用command+shift+G
然后输入路径跳转
参考
Mac下Qt连接MySQL 驱动问题
在mac下使用qt5连接mysql5.7
Mac下Qt连接MySql数据库
最后
以上就是紧张雪糕为你收集整理的macOS下qt5连接mysql5.7驱动问题引言解决Tips参考的全部内容,希望文章能够帮你解决macOS下qt5连接mysql5.7驱动问题引言解决Tips参考所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复