2010-02-04 21 views
47

का उपयोग करते समय त्रुटियों को संभालना मैं अपने कोडिनेटर साइट के लिए कुछ मॉडल डाल रहा हूं और सक्रिय रिकॉर्ड सिस्टम का उपयोग करते समय होने वाली त्रुटियों को संभालने के तरीके के दस्तावेज़ीकरण में कोई शब्द नहीं दिख रहा है।कोडिग्निटर - सक्रिय रिकॉर्ड

प्रलेखन दर्शाता है कि सीआरयूडी को कुछ अपेक्षाकृत शामिल प्रश्नों के साथ कैसे करना है, लेकिन लाइन के साथ कहीं भी त्रुटि प्रबंधन पर चर्चा नहीं की जा रही है। मैंने एक त्वरित Google खोज की है और ऐसा लगता है कि सक्रिय रिकॉर्ड कक्षाएं अपवाद नहीं फेंकती हैं। क्या यह मामला है? कोई कोशिश नहीं तो ...

तो, कोड कोडिटर में डेटाबेस त्रुटियों को संभालने के लिए आप कैसे कोड करते हैं? (असफल कनेक्शन, डुप्लिकेट कुंजी, टूटी रेफरेंशियल अखंडता, छंटनी, खराब डेटा प्रकार इत्यादि)

उत्तर

57

चाहे आप सक्रिय रिकॉर्ड क्लास का उपयोग कर रहे हों या नहीं, आप $this->db->_error_message() और $this->db->_error_number() का उपयोग कर डेटाबेस त्रुटियों तक पहुंच सकते हैं।

यदि आप एक MySQL डेटाबेस का उपयोग कर रहे हैं, तो ये कार्य क्रमशः mysql_error() और mysql_errno() के बराबर हैं। आप डेटाबेस का उपयोग कर रहे डेटाबेस के लिए स्रोत कोड को देखकर इन कार्यों को देख सकते हैं। वे सिस्टम/डेटाबेस/ड्राइवरों में स्थित हैं।

$res = $this->db->query($str); 

if (!$res) { 
    // if query returns null 
    $msg = $this->db->_error_message(); 
    $num = $this->db->_error_number(); 

    $data['msg'] = "Error(".$num.") ".$msg; 
    $this->load->view('customers_edit_view',$data); 
} 

ध्यान दें कि आप भी सक्रिय रिकॉर्ड प्रवेश कर सकते हैं:

if ($this->db->_error_message()) \\handle error 
+18

FYI - यह केवल तभी काम करता है यदि आप डेटाबेस कॉन्फ़िगरेशन फ़ाइल में r db_debug ध्वज FALSE पर सेट है। डिफ़ॉल्ट रूप से सीआई 2.1 – Felby

+1

@emmychan की एक नई स्थापना में यह सत्य पर सेट है: क्या हम डीबी त्रुटि को संभालने के लिए अपवाद पकड़ सकते हैं? क्या यह आपके समाधान के साथ समान है? धन्यवाद – secretlm

+0

एफवाईआई - पोस्टग्रेएसक्यूएल 9.4/सीआई 2.1.3 के साथ, मुझे लगता है कि '_error_number()' अक्सर (हमेशा?) खाली स्ट्रिंग देता है लेकिन '_error_message()' में एक (संभावित रूप से multiline) त्रुटि संदेश टेक्स्ट होता है। तो, विभिन्न स्थानों में त्रुटि का विश्लेषण कैसे करें? – user9645

12
सीधे CodeIgniter समर्थन मंच से

:

तो, आप क्वेरी चलाने के बाद, आप की तरह कुछ का उपयोग कर त्रुटियों के लिए जाँच कर सकते हैं आपकी सीआई ऐप कॉन्फ़िगरेशन फ़ाइल में जाकर और निम्न को सेट करके त्रुटियां:

$config['log_threshold'] = 1; 
संबंधित मुद्दे