我正在尝试使用pyodbc执行Netezza连接,大概是RedHat 7盒上的unixODBC。
我无法这样做。
我正常地在/usr/local/nz
上加载了netezza。尝试打开连接时。
这是连接字符串:
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
放在提示符下,然后按回车键,则发现没有问题。
我在这里想念什么?谢谢!
更新#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)
更新#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)
更多信息:ame -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 --version
nzsql (IBM Netezza SQL) Release 7.2.1.7-P2 [Build 27]
contains history support
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]
libcom_err.so.2 => not found
可能是问题的原因。
作为解决方法,请尝试从nz目录(驱动程序或工具包)复制该lib到/ lib。另外,您可以尝试安装32位libcom_err软件包。
# rpm -qf /lib/libcom_err.so.2
libcom_err-1.41.12-24.el6.i686
当我在64位系统上安装32位客户端时,我可以复制类似的内容。当我切换到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 |
| |
+---------------------------------------+
...