2013-05-06 8 views
5

मेरे कुछ लेनदेन को सरलीकृत के रूप में घोषित किया गया है। कभी-कभी मुझे कक्षा 40 त्रुटियों जैसे 40001 serialization_failure और 40P01 deadlock_detected (मैंने अभी तक अन्य कोड नहीं देखे हैं), विशेष रूप से जब मैं बहुत समवर्ती लेनदेन करके सिस्टम का परीक्षण कर रहा हूं।धारावाहिक लेनदेन में सभी कक्षा 40 त्रुटियां सामान्य हैं?

यदि मैं मैन्युअल रूप से मैन्युअल रूप से समझ गया, तो इसकी अपेक्षा की जा सकती है। जब ये त्रुटियां होती हैं, तो मुझे लगता है कि लेनदेन को फिर से प्रयास करना है। मेरा संदेह यह है कि वर्ग 0 त्रुटियों के सभी सर्जिकल लेनदेन को संभालने के दौरान "सामान्य" हैं। दूसरे शब्दों में, क्या मैं बस यह मान सकता हूं कि किसी भी कक्षा 40 त्रुटि से मुझे लेनदेन को पुनः प्रयास करने के लिए नेतृत्व करना चाहिए, या क्या यह धारणा केवल कक्षा 40 त्रुटियों के उप-समूह के लिए सही है?

+0

पोस्टग्रेज़ का कौन सा संस्करण आप पर हैं? – Kuberchaun

+0

मैं PostgreSQL 9.1 पर हूं। हालांकि उबंटू 13.04 पैकेज उपलब्ध होने पर मैं 9.2 तक अपडेट करूंगा। –

उत्तर

7

प्रति the error codes section of the manual40xxxxSQLSTATE श्रेणी "लेनदेन रोलबैक" है।

  • 40000 transaction_rollback
  • 40002 transaction_integrity_constraint_violation
  • 40001 serialization_failure
  • 40003 statement_completion_unknown
  • 40P01 deadlock_detected
  • :

    यह त्रुटि कोड भी शामिल है 210

इनमें से, मैं आमतौर पर transaction_integrity_constraint_violation की उम्मीद नहीं करता, ताकि पुनः प्रयास ट्रिगर किया जा सके, क्योंकि DEFERRED विदेशी कुंजी जांच के दौरान प्रतिबद्ध होने पर लेनदेन को समाप्त करने का कारण बनता है। यदि आपके आवेदन में समवर्तीता और लॉकिंग डिज़ाइन के साथ समस्याएं हैं, तब तक पुनः प्रयास करने की संभावना नहीं है।

मुझे statement_completion_unknown का सामना नहीं हुआ है; मैं इसे देखने का सुझाव देना चाहूंगा।

व्यक्तिगत रूप से मैं केवल deadlock_detected और serialization_failure पर पुनः प्रयास करूंगा।

+0

उत्तर के लिए धन्यवाद। यद्यपि आप यह सुनिश्चित नहीं करते हैं कि केवल 40001 और 40P01 के लिए जांच वास्तव में सही दृष्टिकोण है। मैं एक और स्पष्ट उत्तर की तलाश में हूं ... –

+0

@ जोनमार्क मैं दस्तावेज़ों में कहीं और इन एसक्लोड्स के संदर्भ नहीं देख रहा हूं, आपको स्रोतों पर एक नज़र रखना पड़ सकता है। मैं अभी ऐसा करने में सक्षम नहीं हूं; अन्य परियोजनाओं से समय की आवश्यकताएं। –

1

इस बीच, केविन ग्रितनर ने मुझे pgsql-सामान्य मेलिंग सूची में an unequivocal answer दिया। संक्षेप में, एक समवर्ती सेटिंग में क्रमिक लेनदेन जारी करते समय 40001 और 40P01 दोनों त्रुटियां "सामान्य" होती हैं।

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