QT/C++ QSqlDatabase: драйвер QMYSQL не загружен в OS X

Я использую
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 ответ

Решение

У меня была эта проблема в macOS High Sierra (10.13.4) с:

  • MySQL-5.6.40-macos10.13-x86_64.dmg
  • MySQL-разъем-с-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`

Наконец, перейдите к sqldrivers внутри каталога плагинов Qt и обновите путь к общей библиотеке с информацией, которую вы нашли ранее:

$ 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

Готово.

Другие вопросы по тегам