соединение pyodbc с драйвером Advantage ODBC (Linux)

Я пытаюсь подключиться к существующему серверу баз данных Sybase Advantage через драйвер ODBC в ЛОКАЛЬНОМ экземпляре. В настоящее время у меня установлены unixodbc, unixodbc-dev и unixodbc-bin.

Когда я пытаюсь сделать следующее:

import pyodbc
str='DRIVER={Advantage ODBC Driver};DataDirectory=/var/lib/advantage/.../dbfile.add;User ID=...;Password=...;ServerTypes=1;'
connection = pyodbc.connect(str)

Я получаю следующую ошибку:

pyodbc.Error: ("IM002", "[IM002] [unixODBC] [Диспетчер драйверов] Имя источника данных не найдено, и драйвер по умолчанию не указан (0) (SQLDriverConnect)')

Вот мой файл /etc/odbc.ini (и /etc/odbcinst.ini):

;
; odbc.ini
;
[ODBC Data Sources]
Odie = Advantage ODBC Driver

[Odie]
Driver=/opt/ads/odbc/redistribute/libadsodbc.so.11.10.0.24
DataDirectory=/var/lib/advantage/.../dbfile.add
Description=Advantage ODBC driver
Rows=False
MemoBlockSize=64
DefaultType=Advantage
MaxTableCloseCache=0
LOCKING=Record
CharSet=OEM
ADVANTAGELOCKING=OFF
ServerTypes=1
TableExtension=

Я вижу здесь три возможных проблемы: либо моя строка подключения неверна, либо мой файл odbc.ini настроен неправильно, либо мой unixodbc не перезагрузил odbc.ini с тех пор, как я его изменил (если есть такая вещь). Я попробовал решение, предложенное здесь, безрезультатно.

Спасибо за вашу помощь!


person Philippe Hebert    schedule 22.04.2016    source источник
comment
Отказ от ответственности: я не знаком с Advantage. Пробовали ли вы отладить соединение с помощью инструмента командной строки isql? Попробуйте подключиться с помощью isql verbose: isql -v dsn username password и посмотрите журнал.   -  person FlipperPA    schedule 23.04.2016
comment
@FlipperPa: я не знал об этой утилите. После возни я указал Odie в качестве DSN. Возвращаемая ошибка изменена выше, возвращая следующее: [01000][unixODBC][Driver Manager]Can't open lib '/opt/ads/odbc/redistribute/libadsodbc.so.11.10.0.24 Я попытался сделать то же самое с sudo, но без изменений. Я проверил наличие проблем с разрешениями; все родительские папки имеют разрешения rwxr-xr-x, а указанный файл имеет права rwxr-xr--. Я также попытался проверить, был ли путь неправильным, выполнив if [ -f path ], и без sudo он вернул true. :почесать мою голову:   -  person Philippe Hebert    schedule 23.04.2016
comment
Может быть, попробовать скопировать libadsodbc.so.11.10.0.24 в /, сделать его 777 и изменить конфигурацию, чтобы она указывала на файл в /? Затем вы можете проверить, является ли это проблемой с разрешениями, и перемещать файл вниз по дереву папок по одному шагу за раз. Некрасиво, но отладка нормально есть! :)   -  person FlipperPA    schedule 23.04.2016
comment
Не повезло; такое же сообщение об ошибке на корневом уровне после chmod 777. user@computer:/$ ls -la дал следующую запись: -rwxrwxrwx 1 root root 338030 Apr 23 08:59 libadsodbc.so.11.10.0.24   -  person Philippe Hebert    schedule 23.04.2016
comment
Тогда это может быть симптомом. Можем ли мы попробовать ldd /opt/ads/odbc/redistribute/libadsodbc.so.11.10.0.24, чтобы увидеть, отсутствуют ли какие-либо зависимости библиотеки?   -  person FlipperPA    schedule 24.04.2016
comment
Все зависимости найдены - linux-gate.so.1 => (0xf7713000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf74f9000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf74dd000) libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf74d7000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7491000) libace.so.11.10 => /usr/lib32/libace.so.11.10 (0xf72d7000) /lib/ld-linux.so.2 (0xf7716000)   -  person Philippe Hebert    schedule 24.04.2016
comment
Для меня эта проблема была решена, когда я использовал версию драйвера adsodbc x64.   -  person Abenil    schedule 06.12.2018