尝试执行NetezzaSQL odbc vi aunixODBC

问题描述 投票:0回答:1

我正在尝试使用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

更新#3-转换为NZ 64位

 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]
python redhat pyodbc netezza unixodbc
1个回答
0
投票

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                                  |
|                                       |
+---------------------------------------+
...
© www.soinside.com 2019 - 2024. All rights reserved.