2012-04-06 46 views
11

एक समय के लिए पुन: प्राप्त करने के बाद उत्पाद बनाते समय अंतिम चरण में,, Magento त्रुटि- निम्नलिखित देता है:SQLSTATE [23,000]: अखंडता बाधा उल्लंघन: कुंजी 'IDX_STOCK_PRODUCT' के लिए 1062 डुप्लिकेट प्रविष्टि '1922-1'

SQLSTATE [23,000]: अखंडता बाधा उल्लंघन: कुंजी 'IDX_STOCK_PRODUCT'

क्या मैं कर रहा हूँ है, उत्पाद आईडी पर कब्ज़ा करके, मैं डाल रहा हूँ यह कस्टम तालिका में प्रवेश है के लिए 1062 डुप्लिकेट प्रविष्टि '1922-1'। मैंने बाहरी रूप से Magento डेटाबेस से कनेक्ट किया है।

आश्चर्यजनक रूप से डेटा मैगेंटो की बेस तालिका & दोनों कस्टम तालिका में भी डाला गया है लेकिन यह मुझे उत्पाद की बचत के बाद त्रुटि क्यों दे रहा है ...?

मैंने कैश, ब्राउजर कुकीज को मंजूरी दे दी। भी/var/cache,/var/session को हटा दें। अभी भी त्रुटि दे रहा है। क्या कोई समाधान का सुझाव दे सकता है?

+0

यह त्रुटि का अर्थ है कि आप एक ही प्राथमिक कुंजी मान को उसी तालिका में दो बार उपयोग कर रहे हैं। 'IDX_STOCK_PRODUCT' में' 1922-1' की आईडी वाला पहले से ही एक उत्पाद है, और एक क्वेरी फिर से उस आईडी के साथ एक नया रिकॉर्ड सहेजने की कोशिश कर रही है। – mrlee

+0

फिर समाधान क्या है? – Prat

+0

मूल रूप से डुप्लिकेट आईडी के साथ डेटा को न सहेजें। इस त्रुटि से संबंधित किसी भी कोड नमूने के बिना, यह सबसे अच्छा समाधान है जिसे आप प्राप्त करने जा रहे हैं। – mrlee

उत्तर

11

संदेश का अर्थ है कि आप उन स्तंभों के समान संयोजन के साथ एक और सम्मिलित कर रहे हैं जो IDX_STOCK_PRODUCT का हिस्सा हैं, जो कि यूनिक के रूप में परिभाषित किए गए हैं। यदि ऐसा है, तो यह दो संयोजन में प्रवेश करने की अनुमति नहीं देता है (ऐसा लगता है कि इसमें दो फ़ील्ड होते हैं)।

यदि आप रिकॉर्ड डाल रहे हैं, तो सुनिश्चित करें कि आप ब्रांड नई रिकॉर्ड आईडी चुन रहे हैं या रिकॉर्ड आईडी और अन्य कॉलम का संयोजन अद्वितीय है।

विस्तृत तालिका संरचना और आपके कोड के बिना, हम शायद ही अनुमान लगा सकते हैं कि क्या गलत हो रहा है।

+0

आप सही राडेक हैं, मैं अपनी कस्टम टेबल में SKU और entity_id ला रहा हूं। मेरी कस्टम टेबल में मेरे पास केवल 4 कॉलम हैं- संख्या, इकाई_आईडी, एसकेयू और टाइमस्टैम्प .... मुझे उस तालिका में क्या बाधा डालना चाहिए? – Prat

1

आप आईडी फ़ील्ड को स्वतः बढ़ाने के लिए भूल गए होंगे।

+0

कुंजी इस उदाहरण में एक कंपाउंड कुंजी है, इसलिए ऑटो वृद्धि के साथ इसका कोई लेना-देना नहीं है। – PanPipes

3

कई बार यह त्रुटि तब होती है जब आप नीचे दिखाए गए अनुसार अपने कस्टम मॉड्यूल के पर्यवेक्षक में कोई उत्पाद अपडेट करते हैं।

class [NAMESPACE]_[MODULE NAME]_Model_Observer 
{ 
    /** 
    * Flag to stop observer executing more than once 
    * 
    * @var static bool 
    */ 
    static protected $_singletonFlag = false; 

    public function saveProductData(Varien_Event_Observer $observer) 
    { 
     if (!self::$_singletonFlag) { 
      self::$_singletonFlag = true; 

      $product = $observer->getEvent()->getProduct(); 
      //do stuff to the $product object 
      // $product->save(); // commenting out this line prevents the error 
      $product->getResource()->save($product); 
    } 
} 

इसलिए जब भी आप अपने मॉड्यूल के पर्यवेक्षक में कुछ गुण को अद्यतन करने का उपयोग $product->getResource()->save($product) के बजाय $product->save()

-1

कोशिश अद्वितीय के बजाय सूचकांक करने के लिए FK बदलने के लिए के बाद अपने उत्पाद को बचाने के।

-4

मैंने अभी एक @ प्रतीक जोड़ा और यह काम करना शुरू कर दिया। इस तरह: @$product->save();

+1

'@' का उपयोग एक बुरा अभ्यास है जिसे हर कीमत से बचा जाना चाहिए! –

+1

विक्टर कहते हैं कि @ से बचा जाना चाहिए क्योंकि यह त्रुटि संदेशों को दबाता है। विवरण [PHP त्रुटि नियंत्रण यहां] के बारे में पाया जा सकता है (http://php.net/manual/en/language.operators.errorcontrol.php) – PanPipes