अखंडता बाधा उल्लंघन: कुंजी 'UNQ_SALES_FLAT_INVOICE_INCREMENT_ID' के लिए 1062 डुप्लिकेट प्रविष्टि


13

मैं एक व्यापारी को कुछ असफल भुगतान लेनदेन के लिए मूल कारण को ट्रैक करने में मदद कर रहा हूं (भारी ऑर्डर के दिन), जो निम्न त्रुटि के साथ विफल हो गया

SQLSTATE [23000]: अखंडता बाधा उल्लंघन: कुंजी 'UNQ_SALES_FLAT_INVOICE_INCREMENT_ID' के लिए 1062 डुप्लिकेट प्रविष्टि '51986'

UNQ_SALES_FLAT_INVOICE_INCREMENT_IDसूचकांक पर एक अद्वितीय कुंजी है increment_idमें स्तंभ sales_flat_invoiceतालिका। जब मैं increment_idत्रुटि के उल्लेख के लिए इस तालिका में देखता हूं ( 51986), मुझे लगता है कि वहां पहले से ही इसके साथ एक चालान है increment_id, और यह एक अलग ग्राहक द्वारा रखे गए आदेश के लिए है।

इससे जुड़े मेरे 2 सवाल

  • Magento CE 1.9.0.1 में एक चालान आईडी सामान्य रूप से बनाई गई है?

  • क्या एक स्टॉक मैगनेटो सीई 1.9.0.1 में समसामयिक आदेशों के लिए चालान आईडी को टकराने के साथ ज्ञात समस्याएं हैं?

मुझे लगता है कि वृद्धि की पहचान आईडी का 51986मतलब है कि स्टोर में बढ़ाई गई आईडी को बदलने के लिए किसी प्रकार का विस्तार है, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि उस रास्ते से बहुत दूर जाने से पहले विज्ञान w / r / t को नहीं जाना जाए।


1
Mage_Eav_Model_Entity_Type :: fetchNewIncrementId () को डिबग बिंदु के रूप में जोड़ना।
एलन स्टॉर्म

1
मैंने इसे पहले देखा है, लेकिन यह किसी save()को एक विशिष्ट पर्यवेक्षक घटना में एक विधि कॉल रखने के कारण था, जो कभी-कभी इस मुद्दे का कारण बनता है - कोड समीक्षा से पहले के दिनों में;)
इरफान

@AlanStorm, सिर्फ जिज्ञासा से बाहर, ईएवी इकाई में क्यों जा रहा है, मुझे लगता है, इनवॉयस एक फ्लैट मॉडल है।
प्रतिपक्षी

मेरा मानना ​​है कि यह डिफ़ॉल्ट Magento के stackoverflow.com/questions/25918091/… के
Fooman में क्रिस्टोफ

1
मैं इस पुराने को जानता हूं, लेकिन किसी भी कारण से eav_entity_store टेबल कॉपी की गई थी। यह एक सामान्य त्रुटि है, जहां अंतिम ऑर्डर आईडी वर्तमान में रखे गए क्रम से मेल नहीं खाती है। तो Magento के आदेश तालिका में सम्मिलित करने के लिए क्या ID निर्धारित करने के लिए eav_entity_store तालिका का उपयोग करता है, और इस मामले में यह पहले से मौजूद है। इसके अलावा, ध्यान दें कि यह FooMan ऑर्डर नंबर एक्सटेंशन के साथ बहुत आम समस्या है क्योंकि यह इस चेक को बायपास कर सकता है और इस मुद्दे को नीले रंग से बाहर कर सकता है।
रॉ

जवाबों:


3

1.6, (?) तक ऑर्डर, चालान, क्रेडिटमेमो, शिपिंग ईएवी था।

@Prateek इनवॉइस EAV मॉडल था और increment_id अभी भी है।

Increment_id निर्माण और समस्या

इन्क्रीमेंट आईडी यहां बनाई गई है

\Mage_Eav_Model_Entity_Attribute_Backend_Increment which calls
\Mage_Eav_Model_Entity_Abstract::setNewIncrementId which calls
\Mage_Eav_Model_Entity_Type::fetchNewIncrementId

मैं मान सकता हूं क्योंकि अंतिम पद्धति में लेनदेन शुरू हो गया है (और तालिका / पंक्ति लॉक नहीं है) एक दूसरा ऑर्डर निर्माण द्वारा पारित हो सकता है और वही नया बनाया जा सकता है increment_id

समाधान

मैं यह मानूंगा कि यदि आप पढ़ने से पहले पंक्ति / तालिका को लॉक करते हैं, तो आप इससे बच सकते हैं कि कोई अन्य प्रक्रिया तालिका को तब तक पढ़ती है जब तक आप एक नया इंक्रीमेंट_आईडी नहीं लिखते। यह मदद कर सकता है: मैं लोड () का उपयोग करने के बाद एक पंक्ति को कैसे बंद करूं?

लेकिन मुझे डर है, कि पंक्ति को बंद करने से खराब प्रदर्शन नुकसान होता है।


1
बस इस पोस्ट और @ फैबियन को देखा, यह जानकर अच्छा लगा। जब किसी उत्तर में किसी का उल्लेख किया जाए तो एसई को भी सूचनाओं को ट्रिगर करना चाहिए।
प्रेटेक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.