2012-03-19 27 views
9

हाय मैंने उबंटू 10.10 32 बिट संस्करण मशीन में वर्टिका के लिए डीएसएन सेटिंग्स को कॉन्फ़िगर किया है। सेटिंग्स ठीक हैं और मैंने उन्हें पार किया है।unixODBC चल रहा है Iql [वर्टिका]

[VerticaDSN] 
    Description = VerticaDSN ODBC driver 
    Driver = /opt/vertica/lib/libverticaodbc_unixodbc.so 
    Servername = myservername 
    Database = mydbname 
    Port = 5433 
    UserName = myuname 
    Password = ******* 
    Locale = en_US 

इसी तरह मैं एक odbcinst.ini फ़ाइल है:

यहाँ मेरी odbc.ini फ़ाइल है।

जब मैं कमांड चलाएँ: isql -v VerticaDSN मैं निम्नलिखित त्रुटि मिलती है:

[S1000][unixODBC][DSI] The error message NoSQLGetPrivateProfileString could not be found in the en-US locale. Check that /en-US/ODBCMessages.xml exists. 
[ISQL]ERROR: Could not SQLConnect. 

मैं सब कुछ कोशिश की है, लेकिन मैं इस त्रुटि को समझने के लिए सक्षम नहीं हूँ।

किसी भी मदद की सराहना की जाएगी।

+0

डेटाबेस ड्राइवर और वर्टिका के कौन से संस्करण आप चल रहे हैं? साथ ही, मैं आमतौर पर अपने ओडीबीसी कनेक्शन में लोकेल निर्दिष्ट नहीं करता हूं। क्या आपको यकीन है कि आपको इसकी आवश्यकता है? यह मुझे उपयोगकर्ता त्रुटि की तुलना में एक स्थानीयकरण बग की तरह लगता है, लेकिन मैं गलत हो सकता है। – bpanulla

+0

मैंने इसे कोई फायदा नहीं पहुंचाया। मैं अभी vertica_5.1.1_odbc_i386_linux vertica ड्राइवर का उपयोग कर रहा हूं। मैंने isql कथन का पता लगाया लेकिन यह vertica.ini फ़ाइल की खोज करता रहता है। क्या ऐसी कोई फाइल है? मुझे लगता है कि यह –

उत्तर

14

आप ड्राइवर कॉन्फ़िगरेशन अनुभाग अनुपलब्ध हो सकते हैं। संपादित करें या निम्नलिखित सामग्री के साथ फ़ाइल /etc/vertica.ini बनाएँ:

[Driver] 
DriverManagerEncoding=UTF-16 
ODBCInstLib=/usr/lib64/libodbcinst.so 
ErrorMessagesPath=/opt/vertica/lib64 
LogLevel=4 
LogPath=/tmp 

अधिक जानकारी अनुभाग "अतिरिक्त ड्राइवर सेटिंग का स्थान" में वर्टिका प्रोग्रामर की मार्गदर्शिका में पाया जा सकता है।

+0

yup नहीं ढूंढ रहा है, मेरे मामले में यह सही समस्या थी –

+0

धन्यवाद! यह सीधे बिंदु पर है। – MohamedEzz

1

त्रुटि से हम देख सकते हैं कि आप यूनिक्सोडबीसी का उपयोग कर रहे हैं और मुझे लगता है कि "डीएसआई" क्या है वर्टिका स्वयं को ओडीबीसी त्रुटि पाठ के रूप में कॉल करता है [] से बाएं से दाएं प्रविष्टियों के साथ स्वरूपित किया जाता है क्योंकि अलग-अलग घटकों (Example diagnostic messages देखें))।

मुझे लगता है कि संदेश होना चाहिए "कोई SQLGetPrivateprofileString नहीं मिला"। SQLGetPrivateProfileString odbc.ini फ़ाइल से प्रविष्टियों को पढ़ने के लिए ओडीबीसी ड्राइवर प्रबंधक द्वारा प्रदान की गई एक एपीआई है। मेरा मानना ​​है कि यह libodbcinst.so साझा ऑब्जेक्ट में पाया जाना चाहिए, हालांकि कुछ वस्तुओं (उदा।, उबंटू/डेबियन) साझा वस्तुओं से स्ट्रिप प्रतीकों को इसलिए सत्यापित करना मुश्किल है।

आपके डीएसएन में, ड्राइवर फ़ाइल "/opt/vertica/lib/libverticaodbc_unixodbc.so" है। हालांकि odbc.ini में ड्राइवर का नाम देना अधिक सामान्य है और odbcinst.ini फ़ाइल में एक प्रविष्टि जोड़ें, आपका डीएसएन ठीक दिखता है। उदाहरण के लिए:

/etc/odbcinst.ini: 
[Easysoft ODBC-SQL Server SSL] 
Driver=/usr/local/easysoft/sqlserver/lib/libessqlsrv.so 
Setup=/usr/local/easysoft/sqlserver/lib/libessqlsrvS.so 
Threading=0 
FileUsage=1 
DontDLClose=1 

/etc/odbc.ini: 
[SQLSERVER_SAMPLE_SSL] 
Driver=Easysoft ODBC-SQL Server SSL 
Description=Easysoft SQL Server ODBC driver 
. 
. 

ऊपर के उदाहरण में देखें कि यह इस तरह से कर रही है आप (और थ्रेडिंग की तरह चालक नेट पर एक त्वरित खोज का सुझाव वर्टिका थ्रेडिंग = 1 का उपयोग कर सकते हैं जो कम करता है, तो सीमित है के साथ जुड़े अतिरिक्त विकल्प निर्दिष्ट कर सकते हैं एक थ्रेडेड प्रोग्राम का उपयोग करके) और डोंटडीएलक्लोस। हालांकि, जैसा कि मैंने कहा था कि चीजें काम करनी चाहिए क्योंकि आपके पास अब है।

अब अगला बिट आपके प्लेटफॉर्म पर निर्भर करता है और मैंने नोटिस नहीं किया कि आपने एक निर्दिष्ट किया है या नहीं। आपको अपने ओडीबीसी चालक के लिए उस साझा वस्तु की जांच करने की आवश्यकता है और देखें कि यह किस पर निर्भर करता है।

$ ldd /usr/local/easysoft/sqlserver/lib/libessqlsrv.so 
    linux-gate.so.1 => (0xb76ff000) 
    libodbcinst.so.1 => /usr/lib/libodbcinst.so.1 (0xb75fe000) 
    libesextra_r.so => /usr/local/easysoft/lib/libesextra_r.so (0xb75fb000) 
    libessupp_r.so => /usr/local/easysoft/lib/libessupp_r.so (0xb75de000) 
    libeslicshr_r.so => /usr/local/easysoft/lib/libeslicshr_r.so (0xb75cd000) 
    libestdscrypt.so => /usr/local/easysoft/lib/libestdscrypt.so (0xb75c8000) 
    libm.so.6 => /lib/libm.so.6 (0xb75a2000) 
    libc.so.6 => /lib/libc.so.6 (0xb7445000) 
    libltdl.so.7 => /usr/lib/libltdl.so.7 (0xb743b000) 
    libpthread.so.0 => /lib/libpthread.so.0 (0xb7421000) 
    /lib/ld-linux.so.2 (0xb7700000) 
    libdl.so.2 => /lib/libdl.so.2 (0xb741d000) 

जो इस ODBC ड्राइवर से पता चलता libodbcinst.so.1 पर निर्भर करता है और गतिशील लिंकर यह पाया: लिनक्स पर आप कुछ इस तरह से करते हैं। मुझे लगता है कि आपके वर्टिका ड्राइवर को इस संबंध में समान दिखना चाहिए, हालांकि यह संभव है कि वर्टिका ड्राइवर पहले से लोड होने पर इस साझा ऑब्जेक्ट को गतिशील रूप से लोड कर सके। किसी भी तरह से, ऐसा लगता है कि वर्टिका ड्राइवर को SQLGetPrivateProfileString का प्रतीक नहीं मिल सकता है जो libodbcinst.so में है, इसलिए सुनिश्चित करें कि आपके पास libodbcinst.so b है) आपके डायनामिक लिंकर को इसके बारे में पता है (यह कैसे किया जाता है आपके प्लेटफ़ॉर्म पर निर्भर करता है - लिनक्स पर /etc/ld.so.conf और LD_LIBRARY_PATH और ld.so के लिए मैन पेज देखें) c) कोई लापता निर्भरता बनाने के लिए उस पर ldd (या समकक्ष) चलाएं।

vertica.ini फ़ाइल संभवतः ड्राइवर ड्राइवर विशिष्ट कॉन्फ़िगरेशन को संग्रहीत करता है - कुछ ड्राइवर ऐसा करते हैं। यदि इस फ़ाइल का प्रारूप ऊपर दिए गए odbc की तरह है, तो यह फ़ाइल के लिए SQLGetPrivateProfileString का भी उपयोग कर सकता है क्योंकि आप ओडीबीसी एपीआई को उपयोग करने के लिए कह सकते हैं।

इसके अलावा मेरे पास संपर्क वर्टिका के अलावा कोई और विचार नहीं है।

0

अरुण - यदि आप मुझे डेटाबेस के संस्करण और ड्राइवर के संस्करण को मुझे बता सकते हैं तो मैं आपको अधिक जानकारी प्राप्त कर सकता हूं। इसके अलावा, मैं इसे आधिकारिक वर्टिका समुदाय मंच पर पोस्ट करने का प्रयास कर सकता हूं।

http://my.vertica.com/forums/forum/application-and-tools-area/client-drivers/

तो मुझे लगता है कि क्या आपकी समस्या मुझे लगता है कि इस पोस्ट से संबंधित हो सकती है था:

http://my.vertica.com/forums/topic/odbc-on-linux-issue/

... 'ODBCInstLib' के बारे में अंत में विशेष रूप से टिप्पणी ।

2

इस मुद्दे के बारे में इंटरनेट खोजना मैंने देखा है कि बहुत से लोग tsql से कनेक्ट करने में सक्षम हैं लेकिन isql या osql (जो isql का उपयोग करता है) के साथ नहीं। मेरे पास यही समस्या है और पिछले हफ्ते यह पता लगाने की कोशिश कर रहा है कि समस्या क्या है। बात यह है कि ओडीबीसी के कोण से हर किसी ने इसका संपर्क किया है जब मुझे लगता है कि यह विंडोज सर्वर या एसक्यूएल सर्वर कॉन्फ़िगरेशन के साथ कुछ करना है। मैंने विंडोज सर्वर पर लॉग की जांच की और देखा कि ओडीबीसी चलाने वाली मशीन ने इसे मारा है और बार-बार लॉग इन करने का प्रयास किया है लेकिन यह करने में सक्षम नहीं है। ईवेंट व्यूअर में एक ही चीज़ दिखाने वाली कई प्रविष्टियां होती हैं, कि क्लाइंट मशीन SQL सर्वर में लॉग इन करने का प्रयास कर रही है लेकिन मेजबान मशीन द्वारा इनकार किया जा रहा है। वह कोण है जिसे मैं अब पर केंद्रित कर रहा हूं और जहां मुझे लगता है कि समस्या झूठ है। अगर मुझे यह हल हो जाता है तो मैं फिर से यह बता दूंगा कि इस समस्या के बारे में मुझे क्या पता चला है।

धन्यवाद,

+0

धन्यवाद जैमैट्रिक्स, इसकी वास्तव में सराहना की –