myodbc-installer перечисляет источники данных, но iodbctest не показывает DSN - PullRequest
0 голосов
/ 10 октября 2019

Я следовал инструкциям по регистрации драйвера и источника данных, приведенным здесь: «Установка Connector / ODBC из двоичного дистрибутива Tarball»

После реализации мне пришлось использоватьsudo при запуске myodbc-installer, я мог успешно установить драйвер, который я установил, чтобы он показывался как зарегистрированный, с:

shell> myodbc-installer -d -l
MySQL ODBC 8.0 Driver

Когда вы запускаете myodbc-installer без аргументов, в нем перечислены параметры командной строкиа также рассказывает, как зарегистрировать источник данных. Пример, который он приводит:

Add a new system data source name for Unicode driver              
shell> myodbc-installer -s -a -c2 -n "test" \                  
           -t "DRIVER=MySQL ODBC 8.0 Unicode Driver;SERVER=localhost;DATABASE=test;UID=myid;PWD=mypwd"

Это не совсем соответствует имени (это MySQL ODBC 8.0 Driver, а не MySQL ODBC 8.0 Unicode Driver ... драйвер ASCII просто MySQL ODBC 8.0 ?)

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

shell> myodbc-installer -s -l
test                  - MySQL ODBC 8.0 Driver

Но программа, с которой я пытался использовать этот DSN, не былаработает. Поэтому я подумал, что я буду искать более простой случай, чтобы попробовать. Программа iodbctest казалась хорошим кандидатом, поскольку в ней есть функция, по которой вы нажимаете ?, и в ней перечислены источники данных. Но я ничего не получаю ...

shell> iodbctest
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0812.0326

Enter ODBC connect string (? shows list): ?

DSN                              | Driver                                  
------------------------------------------------------------------------------

Enter ODBC connect string (? shows list):

Поскольку sudo помог в процессе установки, я думал, что попробую sudo iodbctest, но это не помогло.

1 Ответ

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

Так что я подумал, что я бы попытался найти более простой случай. Программа iodbctest казалась хорошим кандидатом, так как в ней есть функция, по которой вы нажимаете? и в нем перечислены источники данных.

Не смешивайте установки iodbc и unixodbc . iodbc не является абстрактным набором инструментов и тестов для ODBC, это полностью независимая реализация ODBC от unixodbc.

В моем случае я впервые установил unixodbc. Вот что myodbc-installer попросил зарегистрировать драйверы и источники данных через функции общей библиотеки. Но он записал файлы .INI способом, который не соответствует тому, что написал бы iodbc.

Показательный пример: клиент iodbctest, по-видимому, динамически не связан с использованием любого поставщика ODBC. в вашей системе. Он статически связан с подпрограммами iodbc, которые явно ищут в файле odbc.ini для секции [ODBC Data Sources] . Этот индекс, по-видимому, не создается автоматически процессом регистрации unixodbc.

(Примечание. Это может быть ошибкой при использовании его как в unixodbc, так и в mysql-installer, так как в документации говорится "Раздел [ODBC Data Sources] поддерживается в каждом odbc.ini и может использоваться или не использоваться библиотекой odbcinst.")

Интересно, в то время как установщик mysql говорит вам, какиспользуйте его для регистрации источника данных, другое предложение на веб-сайте MySQL предлагает вам отредактировать файл INI вручную . Это противоречит тому, что unixodbc говорит , что ". ПРИМЕЧАНИЕ. Odbc.ini и odbcinst.ini считаются системной информацией ODBC. Весь доступ (чтение или запись) к этой системной информации должен осуществляться черезДиспетчер драйверов или общая библиотека ODBCINST. Не открывайте эти INI-файлы напрямую! " (выделите их)

Помимо проблемы невозможности получить индекс, даже если вы подключаетесь к даннымИсходя из Linux, iODBC использует wchar_t, а не SQLWCHAR. Так что с драйвером Unicode вы получите кучу лишних ответов на ваши запросы.

...