मैं pyodbc का उपयोग करके Netezza कनेक्शन निष्पादित करने का प्रयास कर रहा हूं, संभवतः RedHat 7 बॉक्स पर यूनिक्सोडबीसी है।

मैं ऐसा करने में असमर्थ हूं।

मेरे पास सामान्य रूप से /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)

अधिक जानकारी: 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 - 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]
0
arcee123 20 सितंबर 2019, 21:00
कृपया ldd /usr/local/nz/lib/libnzsqlodbc3.so से आउटपुट शामिल करने के लिए अपने प्रश्न को संपादित करें करें
 – 
Gord Thompson
20 सितंबर 2019, 21:56
अनुरोध के अनुसार अद्यतन किया गया। धन्यवाद!
 – 
arcee123
20 सितंबर 2019, 22:43

1 उत्तर

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

जब मैं 64 बिट सिस्टम पर 32 बिट क्लाइंट स्थापित करता हूं तो मैं कुछ इसी तरह पुन: पेश करने में सक्षम हूं। जब मैं 64 क्लाइंट libs पर स्विच करता हूं तो यह काम करना शुरू कर देता है।

[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                                  |
|                                       |
+---------------------------------------+
...
1
tsekman 25 सितंबर 2019, 18:11
libcom_err.so.2 => /lib/libcom_err.so.2 (0xf71f2000) अब लोड हो रहा है, इसलिए यहां एक छोटा सा बदलाव है। अब आपको क्या त्रुटि हो रही है?
 – 
tsekman
25 सितंबर 2019, 16:37
क्या आप uname -a आउटपुट और एनपीएस क्लाइंट संस्करण भी पोस्ट कर सकते हैं?
 – 
tsekman
25 सितंबर 2019, 16:45
यूनिक्सोडबीसी से isql मेरे लिए इसी तरह से काम नहीं करता [tsekman@tsekmanrhel771 ~]$ cd /usr/local/unixODBC/bin [tsekman@tsekmanrhel771 bin]$ ./isql -v NZSQL [01000][unixODBC][Driver Manager]Can't open lib '/usr/local/nz/lib/libnzodbc.so' : file not found [ISQL]ERROR: Could not SQLConnect
 – 
tsekman
25 सितंबर 2019, 17:34
धन्यवाद! मैंने प्रश्न में नई जानकारी जोड़ी।
 – 
arcee123
25 सितंबर 2019, 17:41
धन्यवाद, आपका सिस्टम 64 बिट का है, मैं linux64 क्लाइंट के साथ प्रयास करने की सलाह दूंगा
 – 
tsekman
25 सितंबर 2019, 18:12