我是靠谱客的博主 紧张雪糕,最近开发中收集的这篇文章主要介绍macOS下qt5连接mysql5.7驱动问题引言解决Tips参考,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 引言
  • 解决
    • 方法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参考所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部