«Невозможно найти имя компонента» в myodbc-installer драйвера - PullRequest
0 голосов
/ 09 октября 2019

Попытка следовать инструкциям по установке драйвера MySQL ODBC .

Когда я пытаюсь запустить:

myodbc-installer -a -d -n "MySQL ODBC 8.0 Driver" -t "Driver=/usr/local/lib/libmyodbc8w.so"

Он говорит:

[ОШИБКА] Ошибка SQLInstaller 6: невозможно найти имя компонента

Я обнаружил несколько случаев, когда люди сообщали об этом же сообщении, например, здесь и здесь . Тем не менее, похоже, что нет никакого разрешения.

Заметив небольшие различия в строке имени -n для различных драйверов, я подумал, что, возможно, это имя немного отличается, и документация не была обновлена. Но я использовал шестнадцатеричный редактор для поиска в /usr/local/lib/libmyodbc8w.so и в нем есть буквенная строка «Драйвер MySQL ODBC 8.0».

1 Ответ

0 голосов
/ 09 октября 2019

Могут быть некоторые случаи несоответствия имени, вызывающего проблему (например, в одном из связанных случаев они используют -n "MySQL" вместо предписанного -n "MySQL ODBC 5.3" из примечаний).

Однако... в моем случае это был вопрос не использования sudo. Сообщение об ошибке не очень помогает указать, что проблема может быть связана с привилегиями! : - / Но в самой верхней части связанной страницы инструкций написано (выделено мое):

Чтобы установить драйвер из дистрибутива tarball (файл .tar.gz), загрузите последнюю версию драйвера для вашей операционной системы и выполните следующие действия, подставив соответствующие имена файлов и каталогов в зависимости от загруженного пакета ( для некоторых из приведенных ниже шагов могут потребоваться привилегии суперпользователя )

Что происходит, так это то, что unixodbc имеет общесистемные odbcinst.ini и odbc.ini. Заявлено, что вы не должны редактировать эти файлы напрямую, но они редактируются через API, который предоставляет unixodbc. Этот API вызывается вспомогательной утилитой MySQL с именем myodbc-installer:

  • Сообщение об ошибке доставляется этой print_installer_error() подпрограммой
  • ..., котораявызывается из add_driver(), когда подпрограмма SQLInstallDriverExW() возвращает false

(Примечание: на большинстве платформ unixodbc предоставляет версию (W) ide для символов * 1035)*, но myodbc-installer определяет свой собственный SQLInstallDriverExW(), если он недоступен через прокладку .)

Этот API, по-видимому, не может сказать, что можетполучить необходимые права доступа к файлам (в /usr/local/etc или, возможно, просто в /etc). Так что myodbc-installer просто попугай, что получил. Вздох.

...