Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

क्या OCI_CONNECT ORA-01438 का कारण बन सकता है:इस कॉलम के लिए अनुमत निर्दिष्ट सटीकता से बड़ा मान?

संदेश error occurred at recursive SQL level 1 मुझे पता चलता है कि त्रुटि एक ट्रिगर के भीतर उत्पन्न हो रही है। मेरा अनुमान है कि एक AFTER LOGON ON SCHEMA . है या DATABASE ट्रिगर, और किसी कारण से जब आपकी वेब सर्वर प्रक्रिया कनेक्ट करने का प्रयास करती है तो यह त्रुटि उत्पन्न करती है।

यहां एक उदाहरण दिया गया है कि आप जो त्रुटि प्राप्त कर रहे हैं उसे कैसे उत्पन्न करें। मेरे पास TINY . नाम की एक टेबल है , एक एकल स्तंभ के साथ जो केवल 99 तक के मान ले सकता है:

एसक्यूएल> विवरण छोटा; नाम शून्य? टाइप ----------------------------------------- -------- ---------------------------- एन नंबर(2)

अब एक उपयोगकर्ता खाता बनाते हैं और सत्यापित करते हैं कि वे कनेक्ट कर सकते हैं:

SQL> फ़्रेड अकाउंट अनलॉक द्वारा पहचाने गए उपयोगकर्ता फ़्रेड बनाएँ;उपयोगकर्ता बनाया गया। 

अच्छा - चलो मेरे रूप में वापस लॉग इन करें और एक ट्रिगर बनाएं जो त्रुटि उत्पन्न करेगा यदि FRED कनेक्ट करने का प्रयास:

एसक्यूएल> कनेक्ट ल्यूक/पासवर्डकनेक्टेड.एसक्यूएल> डेटाबेस 3 पर लॉगऑन के बाद ट्रिगर after_logon_error_if_fred 2 बनाएं या बदलें 4 शुरू करें यदि उपयोगकर्ता ='एफआरईडी' तो 5 छोटे (एन) मानों (100) में डालें; 6 अंत अगर; 7 अंत; 8 /ट्रिगर बनाया गया।

याद रखें कि हमारा TINY तालिका केवल 99 तक के मान संग्रहीत कर सकती है। तो, क्या होता है जब FRED कनेक्ट करने का प्रयास?

एसक्यूएल> कनेक्ट फ्रेड/फ्रेडईआरआरओआर:ओआरए-00604:पुनरावर्ती एसक्यूएल स्तर 1ORA-01438 पर त्रुटि हुई:इस कॉलम के लिए निर्दिष्ट सटीक से बड़ा मानORA-06512:लाइन 3 पर

लाइन नंबर के अलावा, और थोड़ा PHP जोड़ा, ठीक यही संदेश आपको मिला है।

अगर आप देखना चाहते हैं कि क्या कोई AFTER LOGON है आपके डेटाबेस में ट्रिगर, क्वेरी चलाने का प्रयास करें

 SELECT trigger_name, owner FROM all_triggers
 WHERE TRIM(triggering_event) = 'LOGON';
 

मेरे डेटाबेस (Oracle 11g XE बीटा) पर, मुझे निम्न आउटपुट मिलता है:

TRIGGER_NAME का स्वामी ---------------AFTER_LOGON_ERROR_IF_FRED LUKE

मुझे विश्वास नहीं है कि Oracle कोई लॉगिंग आउट-ऑफ-द-बॉक्स करता है, और मुझे आश्चर्य होगा यदि PHP का oci_connect या तो करता है।

मैं केवल अनुमान लगा सकता हूं कि त्रुटि केवल आपके वेब सर्वर के लिए क्यों उत्पन्न होती है, न कि जब आप PHP को बैश स्क्रिप्ट से चलाते हैं। शायद ट्रिगर V$SESSION . को क्वेरी कर रहा है और यह पता लगाने की कोशिश कर रहा है कि कौन सा उपयोगकर्ता खाता डेटाबेस से कनेक्ट करने का प्रयास कर रहा है?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Addnode resolv.conf विफलताएँ

  2. मौजूदा ऑरैकल तालिका में डेटा फ़्रेम सम्मिलित करने में असमर्थ

  3. ओरेकल एसक्यूएल डेवलपर टूल - डेटा प्रतिबद्ध होने के बाद उपलब्ध नहीं है

  4. विंडोज़ में फ़ाइल में ऑरैकल एसक्यूएल परिणाम कैसे आउटपुट करें?

  5. pls_integer और binary_integer में क्या अंतर है?