пытается выполнить NetezzaSQL odbc vi aunixODBC - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь выполнить соединения Netezza, используя pyodbc, но предположительно это unixODBC на RedHat 7.

Я не могу это сделать.

Я загрузил netezza на /usr/local/nz какобычный.при попытке открыть соединение.

вот строка подключения:

Connection=Driver={NetezzaSQL};servername=DEVDBSERVER01;port=5480;database=DEV;username=<<USER>>;password=<<PASSWORD>>

содержимое odbcinst.ini:

[NetezzaSQL]
Driver           = /usr/local/nz/lib/libnzsqlodbc3.so
Setup            = /usr/local/nz/lib/libnzsqlodbc3.so
APILevel         = 1
ConnectFunctions = YYN
Description      = IBM Netezza ODBC driver
DriverODBCVer    = 03.51
DebugLogging     = false
LogPath          = /tmp
UnicodeTranslationOption = utf8
CharacterTranslationOption = all
PreFetch         = 256
Socket           = 16384

ошибка - это то, что я непонимание:

pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/usr/local/nz/lib/libnzsqlodbc3.so' : file not found (0) (SQLDriverConnect)")
Exception ignored in: <bound method dbapi.__del__ of <modules.database.dbapi object at 0x7f6a31b08e80>>

если я помещу файл /usr/local/nz/lib/libnzsqlodbc3.so в приглашение и нажму клавишу возврата, он не обнаружит проблем.

Что мне здесь не хватает? Спасибо!

UPDATE # 1 ... вывод ldd /usr/local/nz/lib/ibnzsqlodbc3.so

ldd /usr/local/nz/lib/libnzsqlodbc3.so
        linux-gate.so.1 =>  (0xf77d0000)
        libm.so.6 => /lib/libm.so.6 (0xf7713000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xf76f8000)
        libdl.so.2 => /lib/libdl.so.2 (0xf76f3000)
        libz.so.1 => /lib/libz.so.1 (0xf76dc000)
        libssl.so.10 => /usr/local/nz/lib/libssl.so.10 (0xf7678000)
        libcrypto.so.10 => /usr/local/nz/lib/libcrypto.so.10 (0xf74c5000)
        libkrb5.so.3 => /usr/local/nz/lib/libkrb5.so.3 (0xf741f000)
        libc.so.6 => /lib/libc.so.6 (0xf7254000)
        /lib/ld-linux.so.2 (0xf77d1000)
        libgssapi_krb5.so.2 => /usr/local/nz/lib/libgssapi_krb5.so.2 (0xf7219000)
        libcom_err.so.2 => not found
        libk5crypto.so.3 => /usr/local/nz/lib/libk5crypto.so.3 (0xf71e9000)
        libresolv.so.2 => /lib/libresolv.so.2 (0xf71d0000)
        libcom_err.so.3 => /usr/local/nz/lib/../lib/libcom_err.so.3 (0xf71cd000)
        libkrb5support.so.0 => /usr/local/nz/lib/../lib/libkrb5support.so.0 (0xf71c4000)

update # 2: Новый вывод ldd:

ldd /usr/local/nz/lib/libnzsqlodbc3.so
        linux-gate.so.1 =>  (0xf77b0000)
        libm.so.6 => /lib/libm.so.6 (0xf76f2000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xf76d7000)
        libdl.so.2 => /lib/libdl.so.2 (0xf76d2000)
        libz.so.1 => /lib/libz.so.1 (0xf76bb000)
        libssl.so.10 => /usr/local/nz/lib/libssl.so.10 (0xf7657000)
        libcrypto.so.10 => /usr/local/nz/lib/libcrypto.so.10 (0xf74a4000)
        libkrb5.so.3 => /usr/local/nz/lib/libkrb5.so.3 (0xf73fe000)
        libc.so.6 => /lib/libc.so.6 (0xf7233000)
        /lib/ld-linux.so.2 (0xf77b1000)
        libgssapi_krb5.so.2 => /usr/local/nz/lib/libgssapi_krb5.so.2 (0xf71f8000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0xf71f2000)
        libk5crypto.so.3 => /usr/local/nz/lib/libk5crypto.so.3 (0xf71c3000)
        libresolv.so.2 => /lib/libresolv.so.2 (0xf71aa000)
        libcom_err.so.3 => /usr/local/nz/lib/libcom_err.so.3 (0xf71a7000)
        libkrb5support.so.0 => /usr/local/nz/lib/libkrb5support.so.0 (0xf719e000)

больше информации: uname -a

Linux <<hostname>> 3.10.0-1062.1.1.el7.x86_64 #1 SMP Tue Aug 13 18:39:59 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

nzsql - версия

nzsql (IBM Netezza SQL) Release 7.2.1.7-P2 [Build 27]
contains history support

ОБНОВЛЕНИЕ № 3 - переход на 64-разрядную NZ

 ldd /usr/local/nz/lib64/libnzodbc.so
        linux-vdso.so.1 =>  (0x00007ffcb6310000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f0566d66000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f0566a64000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f0566848000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f0566644000)
        libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f056635b000)
        libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f056614b000)
        libcom_err.so.3 => not found
        libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f0565f18000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f0567578000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f0565d14000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f0565b10000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f05658f7000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f05656d0000)
        libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f056546e000)

тот же ответ:

[[unixODBC][Driver Manager]Can't open lib '/usr/local/nz/lib64/libnzodbc.so' : file not found]

1 Ответ

1 голос
/ 25 сентября 2019

libcom_err.so.2 => not found может быть причиной проблемы.

В качестве обходного пути попробуйте скопировать эту lib из каталога nz (драйвера или комплекта) в / lib.В качестве альтернативы вы можете попробовать установить 32-битный пакет libcom_err.

# rpm -qf /lib/libcom_err.so.2
libcom_err-1.41.12-24.el6.i686

Я могу воспроизвести нечто подобное при установке 32-битного клиента в 64-битной системе.Когда я переключаюсь на 64 клиентских библиотеки, она начинает работать.

[root@tsekmanrhel771 ~]# export LD_LIBRARY_PATH=/usr/local/nz/lib64:/usr/local/unixODBC/lib
[root@tsekmanrhel771 ~]# /usr/local/unixODBC/bin/isql -v NZSQL
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
...
...