2012-10-23 17 views
5

के लिए ऑटोकॉमिट को अक्षम कैसे करें मुझे लिनक्स में erlang odbc मॉड्यूल का उपयोग करके ऑरैकल के लिए ऑटोकॉमिट अक्षम करने की आवश्यकता है। मैं कोड के संबंध बनाया है:erlang odbc: ऑरैकल

{ok, Con} = odbc:connect("DSN=MyDSN", [{auto_commit, off}, {scrollable_cursors, off}]). 

कनेक्शन को सफलतापूर्वक बना लिया गया था। जब मैं एक टेबल को अपडेट करने का प्रयास कर रहा हूं तो अनुरोध सफल है, लेकिन यह स्वचालित रूप से प्रतिबद्ध है। मैं क्या गलत कर रहा हूं?

+0

यह एरलांग के बाहर एक सेटिंग हो सकता है, शायद डेटाबेस पर जो स्वत: प्रतिबद्धता को मजबूर करता है। –

+0

नहीं। उसी डेटाबेस के साथ ओरेकल एसक्यूएल डेवलपर का उपयोग करना मुझे मैन्युअल रूप से करना है। –

+0

मुझे लगता है कि शायद यह मुद्दा ओडीबीसी में है, न कि खुद को –

उत्तर

3

ठीक है, दोस्तों। मैंने खुद समस्या को ठीक किया। जैसा कि मैंने पहले टिप्पणियों में कहा था, मुद्दा यह है कि लिनक्स के लिए ओरेकल ओडीबीसी ड्राइवर कनेक्शन निर्माण से पहले ड्राइवर प्रारंभिकरण के दौरान ऑटोोकॉमिट मोड को अनदेखा कर रहा था। और एक कनेक्शन के बाद पहले से ही गठबंधन बनाया गया है autocommit मोड सही ढंग से सेट है।

मैंने एरलंग ओडीबीसी मॉड्यूल के लिए सी स्रोत के लिए एक फिक्स बनाया और अब यह ठीक काम करता है। आप यहां Erlang OTP के लिए अपने पैच प्राप्त कर सकते हैं - https://github.com/RubberCthulhu/erlang-odbc-oracle-fix

अद्यतन: समाचार बेचा गया है, लेकिन फिर भी यह यहां सूचित करने के लिए उपयोगी हो सकता है। ओरेकल ओडीबीसी के लिए मेरा फिक्स एरलांग/ओटीपी में शामिल किया गया है। इसलिए चूंकि आर 16 ए समस्या वास्तविक नहीं है और यदि आपको ओरेकल के साथ ओडीबीसी का उपयोग करने की आवश्यकता है तो बस एरलांग/ओटीपी के नवीनतम संस्करण को आजमाएं। R14B04-R15B02 के लिए पैच यहां उपलब्ध हैं - https://github.com/RubberCthulhu/erlang-odbc-oracle-fix

0

ओडीबीसी में SQLSetConnectAttr() फ़ंक्शन है। इसका उपयोग SQL_ATTR_AUTOCOMMIT और SQL_AUTOCOMMIT_OFF मानों के साथ किया जा सकता है। लेकिन मुझे नहीं पता कि इसे एरलांग से कैसे कॉल करें।

+0

erlang odbc मॉड्यूल में आप केवल कनेक्शन बनाते समय ऑटोकॉमिट मोड सेट कर सकते हैं। –

+0

हो सकता है कि आप इस क्रिया को 'erl_ddll: load_library'' odbc32.dll' और आवश्यक कार्यों (कम से कम 'SQLSetConnectAttr()') के साथ कॉल करके Erlang पर दिखाई दे सकें? –

+0

शायद यह एक तरीका है। मैं यह पता लगाने में कामयाब रहा कि लिनक्स के लिए ओरेकल ओडीबीसी चालक के साथ ऐसा कोई मुद्दा नहीं आया है, न केवल एरलांग के साथ। समस्या यह है कि ऑटोकॉमिट मोड केवल कनेक्शन के निर्माण के बाद ही सेट किया जा सकता है। Erlang odbc प्रबंधक ड्राइवर लोड करने के बाद SQL_ATTR_AUTOCOMMIT स्थिति पर गुजरता है, लेकिन कनेक्ट करने से पहले, शायद ओरेकल ओडीबीसी ड्राइवर कनेक्ट होने से पहले इसे अनदेखा कर रहा है। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^