डेटाबेस के माध्यम से डुप्लिकेट स्क्यू कैसे निकालें?


12

मुझे यह त्रुटि तब मिलती है जब मैं अपने कुछ Magento उत्पादों को व्यवस्थापक द्वारा संपादित और सहेजने का प्रयास करता हूं: " विशेषता" SKU "का मूल्य अद्वितीय होना चाहिए ।"

जब मैं अपने उत्पादों को मैगनेटो व्यवस्थापक में देखता हूं तो एक डुप्लीकेट स्कू कहीं नहीं मिलता है, लेकिन जब मैं एक उत्पाद निर्यात चलाता हूं तो वास्तव में उसी स्कू के साथ कुछ उत्पाद होते हैं। सिद्धांत रूप में Magento को कभी भी ऐसा करने की अनुमति नहीं देनी चाहिए थी, लेकिन अफसोस, मैं उत्पादों के एक बड़े और परिपक्व (3+ वर्ष पुराने) समूह के साथ काम कर रहा हूं जो पिछले Magento के कीड़े और quirks के अवशेष ले जाने के लिए लगता है।

मैं इस मुद्दे को ठीक करने का एकमात्र तरीका अनुमान लगा रहा हूं, डेटाबेस से डुप्लिकेट स्केस में से एक को मैन्युअल रूप से निकालना है, लेकिन मैं ऐसा करने के लिए सबसे अच्छा / सबसे सुरक्षित तरीका सुनिश्चित नहीं हूं। मेरे पास डेटाबेस के साथ काम करने का बहुत अधिक अनुभव है, इसलिए किसी भी मदद की सराहना की जाती है।

जवाबों:


7
  1. अपनी catalog_product_entityडेटाबेस तालिका का बैकअप लें ( देखें: /programming//a/6683000/4457531 )

  2. जांचें कि क्या डुप्लीकेट स्कोस catalog_product_entityइस प्रश्न के साथ तालिका में प्रस्तुत किए गए हैं :

    SELECT COUNT(*), sku
    FROM `catalog_product_entity`
    GROUP BY sku HAVING COUNT(*) > 1
    
  3. डुप्लिकेट प्रविष्टियाँ निकालें

    • नए डुप्लिकेट उत्पाद निकालें और पुराने स्कू को साथ रखें:

      DELETE catalog_product_entity FROM catalog_product_entity
      LEFT OUTER JOIN (
          SELECT MIN(entity_id) as id, sku
          FROM catalog_product_entity
          GROUP BY sku
      ) as t1
      ON catalog_product_entity.entity_id = t1.id
      WHERE t1.id IS NULL
      
    • करने के लिए पुराने को हटाने डुप्लिकेट उत्पादों और नई रखने sku को, की जगह MINद्वाराMAX में सबक्वेरी में शामिल होने के

      LEFT OUTER JOIN (
          SELECT MAX(entity_id) as id, sku
          ...
      )
      

3

संभवतः आपके डेटाबेस में SKU का डुप्लिकेट नहीं है, वे केवल निर्यात करते समय 1.9.2.x में दिखाई देते हैं।

इसे इस्तेमाल करे:

https://github.com/baconl/Magento-1.9.2.1-duplicate-sku-fix

Magento कोर टीम इसे ठीक करता है, जब तक इसका एक अस्थायी सुधार


1

आपको उन अप्रत्याशित स्कोस की जांच और सफाई करने की आवश्यकता होगी। पहले संबंधित स्कोस को खोजें, फिर आपको नीचे दिए गए प्रश्न के साथ डेटाबेस में इसे साफ करना होगा:

DELETE FROM `catalog_product_entity` WHERE `sku` IN ('SKU1', 'SKU2', ..., 'SKU1654');

ध्यान दें कि मैं आपको इसे करने की सलाह देता हूं यदि आप सुनिश्चित करते हैं कि आप क्या करते हैं, तो यह प्रतिवर्ती नहीं होगा।


किसी भी समझदार क्वेरी को सीधे लागू करने से पहले अपने db का बैकअप लेने का ध्यान रखें
Nolwennig

1

कृपया डेटाबेस के माध्यम से bellow स्क्रिप्ट चलाएँ

DELETE FROM `catalog_product_entity` WHERE `entity_id` IN (SELECT *  FROM (SELECT `entity_id` FROM `catalog_product_entity` GROUP BY `sku` HAVING (COUNT(*) > 1)) AS A);

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