QT / C ++ QSqlDatabase:OS X上未加载QMYSQL驱动程序

时间:2017-04-05 20:57:01

标签: c++ mysql qt qsqldatabase

我正在使用
OS X:10.12.4
Qt Creator 4.0.2
MySQL 5.0.12(看起来那样,不确定)
C ++

在QT下我试图通过以下代码连接到mysql数据库:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("sql104.rf.gd"); // 185.27.134.10
//db.setPort(3306);
db.setUserName("correctname");
db.setPassword("correctpw");
db.setDatabaseName("rfgd_19926673_shop");

if (db.open()){
   ui->label->setText("success");
   } else {
   i->label->setText("fail");
}

它失败了

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

我已经尝试了这个但没有结果

QPluginLoader loader;
loader.setFileName("/Users/Ivan/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlmysql.dylib");

返回

Cannot load library 
/Users/Ivan/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlmysql.dylib: (dlopen(/Users/Ivan/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlmysql.dylib, 5): Library not loaded: /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib
Referenced from: /Users/Ivan/Qt/5.7/clang_64/plugins/sqldrivers/libqsqlmysql.dylib
Reason: image not found)
/Users/Ivan/build-CourierHelperDesktop-Desktop_Qt_5_7_0_clang_64bit-Release/CourierHelperDesktop.app/Contents/MacOS

我只有

/usr/local/mysql-5.7.17-macos10.12-x86_64/lib/lib/mysqlclient.20.dylib

尝试了

mkdir /opt/local/lib/mysql55/mysql/
cp /usr/local/mysql-5.7.17-macos10.12-x86_64/lib/lib/mysqlclient.20.dylib /opt/local/lib/mysql55/mysql

没有帮助。

请有人帮助我。我真的被卡住了。

1 个答案:

答案 0 :(得分:1)

我在macOS High Sierra(10.13.4)上遇到了这个问题:

  • 的MySQL-40年6月5日 - macos10.13-x86_64.dmg
  • MySQL的连接器-C-6.1.11-macos10.12-x86_64.dmg
  • Qt 5.10.1
  • clang:Apple LLVM 9.0.0版(clang-900.0.39.2)目标:x86_64-apple-darwin17.5.0

你很幸运,我一开始并没有收到这条消息。我必须通过在项目属性>上设置一个名为QT_DEBUG_PLUGINS的新环境变量1来启用更多调试信息。运行即可。再次执行我的应用程序显示与您的错误消息几乎相同。

要解决这个问题,首先需要找到计算机中libmysqlclient.18.dylib的位置:

$ find / -iname libmysqlclient.18.dylib
/usr/local/mysql/lib/libmysqlclient.18.dylib

很好,现在找到Qt存储其插件的位置:

$ qmake -query QT_INSTALL_PLUGINS
/Users/karlphillip/Qt/5.10.1/clang_64/plugins

并使用此信息在终端上创建一个新的环境变量,以使下一部分更容易:

$ export QT_PLUGIN_PATH=`qmake -query QT_INSTALL_PLUGINS`

最后,转到Qt插件目录中的sqldrivers并使用您之前找到的信息更新共享库路径:

$ cd /Users/karlphillip/Qt/5.10.1/clang_64/plugins/sqldrivers
$ install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib $QT_PLUGIN_PATH/sqldrivers/libqsqlmysql.dylib

完成。