Qt5.11.2, QSqlDatabase и MariaDB на iMAC - PullRequest
       9

Qt5.11.2, QSqlDatabase и MariaDB на iMAC

0 голосов
/ 04 октября 2018

Я пытаюсь подключиться к MariaDB на моем iMAC.Я знаю, что имя базы данных, имя пользователя и пароль для подключения верны.

Я установил Qt5.11.2 и пытаюсь сделать следующее:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("Simons-iMac.local");
db.setDatabaseName("timekpr");
db.setUserName("timekpr");
db.setPassword("timekpr");
bool ok = db.open();

Я пинговалимя хоста в терминале, и я вижу возвращенный IP-адрес.

Когда я получаю метод open, он возвращает false.Есть ли что-нибудь еще, что я могу сделать, чтобы получить больше информации о причинах сбоя?

iMAC работает под управлением iOS Mojave версии 10.14

[Edit] Когда я запускаю это с помощью отладчика, я вижув области вывода приложения:

    2018-10-04 15:46:27.868976+0100 SimonQtWidgets[21670:626041] [default] Unable to load Info.plist exceptions (eGPUOverrides)
    2018-10-04 15:46:30.472706+0100 SimonQtWidgets[21670:625982] QSqlDatabase: QMYSQL driver not loaded
    2018-10-04 15:46:30.472764+0100 SimonQtWidgets[21670:625982] QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
    2018-10-04 15:46:34.975324+0100 SimonQtWidgets[21670:625982] QSqlError("", "Driver not loaded", "Driver not loaded")

Я не понимаю, что происходит, согласно второй строке, доступен QMYSQL.Но сообщается об ошибке: драйвер не загружен ???

Если это поможет:

Hardware Overview:

  Model Name:            iMac
  Model Identifier:      iMac17,1
  Processor Name:        Intel Core i7
  Processor Speed:       4 GHz
  Number of Processors:  1
  Total Number of Cores: 4
  L2 Cache (per Core):   256 KB
  L3 Cache:              8 MB
  Memory:                16 GB
  Boot ROM Version:      IM171.0157.B00
  SMC Version (system):  2.34f2

[Другое редактирование] После добавления QT_DEBUG_PLUGINS = 1 в среду времени выполнения, которую я сейчас вижу в приложенииВывод:

    2018-10-10 10:30:42.060973+0100 SimonQtWidgets[2001:286805] Got keys from plugin meta data ("QPSQL7", "QPSQL")
    2018-10-10 10:30:42.060985+0100 SimonQtWidgets[2001:286805] QFactoryLoader::QFactoryLoader() checking directory path "/Users/simonplatten/build-SimonQtWidgets-Desktop_Qt_5_11_2_clang_64bit-Debug/SimonQtWidgets.app/Contents/MacOS/sqldrivers" ...
    2018-10-10 10:30:42.063252+0100 SimonQtWidgets[2001:286805] Cannot load library /Users/simonplatten/Qt/5.11.2/clang_64/plugins/sqldrivers/libqsqlmysql.dylib: (dlopen(/Users/simonplatten/Qt/5.11.2/clang_64/plugins/sqldrivers/libqsqlmysql.dylib, 133): Library not loaded: /usr/local/mysql/lib/libmysqlclient.20.dylib
      Referenced from: /Users/simonplatten/Qt/5.11.2/clang_64/plugins/sqldrivers/libqsqlmysql.dylib
      Reason: image not found)
    2018-10-10 10:30:42.063276+0100 SimonQtWidgets[2001:286805] QLibraryPrivate::loadPlugin failed on "/Users/simonplatten/Qt/5.11.2/clang_64/plugins/sqldrivers/libqsqlmysql.dylib" : "Cannot load library /Users/simonplatten/Qt/5.11.2/clang_64/plugins/sqldrivers/libqsqlmysql.dylib: (dlopen(/Users/simonplatten/Qt/5.11.2/clang_64/plugins/sqldrivers/libqsqlmysql.dylib, 133): Library not loaded: /usr/local/mysql/lib/libmysqlclient.20.dylib\n  Referenced from: /Users/simonplatten/Qt/5.11.2/clang_64/plugins/sqldrivers/libqsqlmysql.dylib\n  Reason: image not found)"
    2018-10-10 10:30:42.063293+0100 SimonQtWidgets[2001:286805] QSqlDatabase: QMYSQL driver not loaded
    2018-10-10 10:30:42.063465+0100 SimonQtWidgets[2001:286805] QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7

Похоже, что Qt ожидает, что mysql будет расположен в:

    /usr/local/mysql/

У меня нет установки, я искал mysql, используя:

    find / -name mysql

И найдено:

    /usr/local/bin/mysql

Также:

    /usr/local/Cellar/mariadb/10.1.17/bin/mysql
    /usr/local/Cellar/mariadb/10.1.17/include/mysql
    /usr/local/Cellar/mariadb/10.1.17/share/mysql
    /usr/local/Cellar/mariadb/10.2.6/bin/mysql
    /usr/local/Cellar/mariadb/10.2.6/include/mysql
    /usr/local/Cellar/mariadb/10.2.6/include/mysql/mysql
    /usr/local/Cellar/mariadb/10.2.6/.bottle/etc/init.d/mysql
    /usr/local/Cellar/mariadb/10.2.6/.bottle/etc/logrotate.d/mysql
    /usr/local/Cellar/mariadb/10.2.6/share/mysql

Я также нашел это в акции:

    lrwxr-xr-x    1 simonplatten  admin     36 10 Jun  2017 mysql -> ../Cellar/mariadb/10.2.6/share/mysql

Есть ли в любом случае изменить где Qtищет mysql?

1 Ответ

0 голосов
/ 12 октября 2018

Исправлено, вот как:

Вручную создайте необходимую структуру папок, из / usr / local:

    sudo mkdir mysql
    cd mysql
    sudo mkdir lib
    cd lib

Создайте символическую ссылку на нужную библиотеку:

    sudo ln -s /usr/local/lib/libmysqlclient.dylib /usr/local/mysql/lib/libmysqlclient.20.dylib

Это затем высветило еще одну проблему с использованием имени домена для подключения, я решил эту проблему с помощью localhost.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...