डेटा माइग्रेशन Eav स्टेप एरर


11

किसी को भी इस मुद्दे को होने?

डेटा माइग्रेशन> EAV स्टेप

SQLSTATE [23000]: अखंडता बाधा उल्लंघन: कुंजी 'EAV_ATTRIBUTE_SET_ENTITY_TYPE_ID_ATTRITUTE_SET_NAME' के लिए 1062 डुप्लिकेट प्रविष्टि '1-माइग्रेशन_Default'


क्या आपको इसके लिए कोई समाधान मिला है?
गौरव अग्रवाल

जवाबों:


4

यह त्रुटि तब होती है जब माइग्रेशन टूल डेटा को स्थानांतरित करने में विफल रहता है (जैसे अखंडता के उल्लंघन के कारण) बिना वापस रोल किए, और फिर से चलाया जाता है। यह "माइग्रेशन_डिफॉल्ट" विशेषता सेट बनाने का प्रयास करता है और विफल रहता है, क्योंकि यह पहले से ही डेटाबेस में मौजूद है।

आपको क्या करना है:

1) माइग्रेशन टूल को चलाने से पहले आपके (उम्मीद से) बनाए गए कॉपी से अपने Magento 2.0 डेटाबेस को पुनर्स्थापित करें।

2) माइग्रेशन टूल को फिर से चलाएँ और उस पहले त्रुटि के लिए जाँच करें जिस पर वह विफल रहता है। मेरे मामले में यह था:

[PDOException]                                                                                                              
  SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'home-1' for key 'URL_REWRITE_REQUEST_PATH_STORE_ID'

3) समस्या को ठीक करें (मुझे DB में एक पंक्ति को मैन्युअल रूप से निकालना पड़ा)।

जब तक आपने सभी त्रुटियां साफ़ नहीं की हैं, तब तक चरण दोहराएं और मधुर ध्वनि वाला संदेश देखें:

Migration completed

मैं एक ही मुद्दे का सामना कर रहा हूं, मैं इस मूल्य को कहां बदल सकता हूं?
पुरुषोत्तम शर्मा

1
कौन सा मूल्य? कैसे एक DB पंक्ति को हटाने के लिए जो अखंडता बाधा का कारण बन रहा है? इंडेक्स नाम को देखें। मेरे मामले में यह "URL_REWRITE_REQUEST_PATH_STORE_ID" था। इसका पहला भाग आपत्तिजनक रिकॉर्ड वाली तालिका का नाम है। मेरे मामले में यह url_rewrite था (या अधिक सटीक रूप से my-prefix_url_rewrite)। REQUEST_PATH और STORE_ID दो स्तंभ हैं जिन्हें एक साथ रखने पर अद्वितीय होना पड़ता है। मेरे मामले में माइग्रेशन टूल request_path के तहत "home" के साथ दो और store_id के तहत दो रिकॉर्ड सम्मिलित करने का प्रयास कर रहा था। मुझे पहले वाले को हटाना था।
Mateusz

@Mateusz, अगर हम कमांड का उपयोग करते हैं, और यह db को रीसेट नहीं करेगा और शुरुआत से शुरू होगा? हर बार डीबी को बहाल करने में बहुत समय लगता है
जफ़र पिंजर

@ जफरपिनजर (या कोई और इसे देख रहा है) हां यह सही है। आपको हर बार डेटाबेस को पुनर्स्थापित करने की आवश्यकता है। Magento 2 के दस्तावेज़ से: "डेटा माइग्रेशन टूल को प्रारंभ से चलाने के लिए मजबूर करने के लिए --reset तर्क का उपयोग करें। उस स्थिति में, हम आपको पहले से माइग्रेट किए गए डेटा को रोकने के लिए अपने Magento 2 डेटाबेस डंप को पुनर्स्थापित करने की सलाह देते हैं।"
वेकगेट

@ मेटूस, मेरे पास यह त्रुटि है, "अखंडता बाधा उल्लंघन: 1062 कुंजी 'WISHLIST_CUSTOMER_ID' के लिए डुप्लिकेट प्रविष्टि '0'
jafar pinjar

2

मुझे यह समाधान मिला जिसने मेरे लिए इस मुद्दे को हल किया https://github.com/magento/data-migration-tool/issues/235#issuecomment-321923437

समाधान Magento 1 डेटाबेस में eav_attribute_set टेबल के "Default_x" फ़ील्ड में "डिफ़ॉल्ट" नाम "Default_value_name" फ़ील्ड वाले सभी मानों का नाम बदलने और खरोंच से माइग्रेशन चलाने के लिए है।

मेरे मामले में, "डिफ़ॉल्ट" नाम के साथ 9 रिकॉर्ड थे। इसलिए मैंने उन्हें Default_1 को Default_9 में बदल दिया और यह पूरी तरह से काम कर गया!


धन्यवाद, यह मेरे लिए भी काम किया। आगे मुझे एक संबंधित डुप्लिकेट कुंजी त्रुटि मिली EAV_ATTRIBUTE_GROUP_ATTRIBUTE_SET_ID_ATTRIBUTE_GROUP_CODE, और एक समान दृष्टिकोण द्वारा हल किया गया:UPDATE eav_attribute_group SET attribute_group_name = CONCAT(attribute_group_name, "_", attribute_set_id) WHERE attribute_group_name = "General";
WackGet

@ अल्फ्रेडो लैंजेटा, मैं सफलतापूर्वक एम 2 में स्थानांतरित हो गया हूं, लेकिन लगता है कि कस्टम लेआउट विकल्प के साथ एक मुद्दा है। मैं उसी के बारे में आपकी अंतर्दृष्टि चाहता हूं। क्या आप कृपया मेरे प्रश्न पर एक नज़र डाल सकते हैं?
CodeForGood

1

मेरे मामले में : मेरे साथ ऐसा हुआ था और मुझे माइग्रेशन 2 डेटाबेस का बैकअप पुनः लोड करने से पहले आयात करना पड़ा।

आपके मामले में : हो सकता है कि आपको दूसरी बार डेटा माइग्रेशन पुनः लोड करना पड़े।


हाय @ केविन, रीसेट कमांड सेटिंग्स रीसेट नहीं करेगा? यह शुरू से शुरू नहीं होगा? हर बार DB रीसेट करने की आवश्यकता है?
जाफर पिंजर

@ जफरपिनजर (या कोई और इसे देख रहा है) हां यह सही है। आपको हर बार डेटाबेस को पुनर्स्थापित करने की आवश्यकता है। Magento 2 के दस्तावेज़ से: "डेटा माइग्रेशन टूल को प्रारंभ से चलाने के लिए मजबूर करने के लिए --reset तर्क का उपयोग करें। उस स्थिति में, हम आपको पहले से माइग्रेट किए गए डेटा को रोकने के लिए अपने Magento 2 डेटाबेस डंप को पुनर्स्थापित करने की सलाह देते हैं।"
वेकगेट

1

इस समस्या को ठीक करने के लिए,

  1. पहले आपको पहले से ही माइग्रेट किए गए विशेषता सेट के लिए जांच करने की आवश्यकता है।
  2. फिर डिफ़ॉल्ट वाले को छोड़कर उन विशेषता सेटों को हटा दें।

आप अपने SQL क्वेरी एप्लिकेशन या इंटरफ़ेस के माध्यम से ऐसा कर सकते हैं।

DELETE FROM eav_attribute_set WHERE attribute_set_name != 'Default';

1

अपने माइग्रेटिंग डेटाबेस Magento 2 के साथ डबल चेक। कभी-कभी हमने डेटा माइग्रेटिंग टूल में डेटाबेस का नाम नहीं बदला।

ताजा Magento के उदाहरण को पुनर्स्थापित करें और डेटा माइग्रेटिंग टूल में डेटाबेस का नाम सही ढंग से जोड़ें


0

डेटा-माइग्रेशन-टूल utf8 में स्रोत से डेटा प्राप्त नहीं करता है।
यहाँ इस समस्या का एक सरल समाधान है:

संपादित करें: vendor/magento/data-migration-tool/src/Migration/ResourceModel/Adapter/Mysql.php

public function __construct(
    \Magento\Framework\DB\Adapter\Pdo\MysqlFactory $adapterFactory,
    \Magento\Framework\DB\Ddl\TriggerFactory $triggerFactory,
    array $config
) {
    $config['initStatements'] = 'SET NAMES utf8'; // +
    $configData['config'] = $config;
    $this->resourceAdapter = $adapterFactory->create($configData);
    $this->setForeignKeyChecks(0);
    $this->triggerFactory = $triggerFactory;
}

GitHub


क्या आप बता सकते हैं कि इससे प्राथमिक कुंजी को डुप्लिकेट करने पर क्या फर्क पड़ेगा?
डोमडम्ब्रोगिया

0

मेरे अनुभव में, नमूना डेटा स्थापित है। इसलिए, मैंने निम्नलिखित कदम उठाए हैं।

  1. मैंने डेटाबेस को गिरा दिया
  2. फिर नमूना डेटा के बिना फिर से Magento 2 को पुनर्स्थापित करें।

फिर, मैं पलायन कर सकता हूं।


0

निम्नलिखित एसक्यूएल के साथ मेरे मुद्दे को फिक्स्ड:

अखंडता बाधा उल्लंघन: कुंजी के लिए 1062 डुप्लिकेट प्रविष्टि '4-छवियाँ' - Magento 2

delete from eav_attribute_group WHERE attribute_group_name = 'Images';

तो कुछ कोशिश करो

delete from eav_attribute_group WHERE attribute_group_name = 'Home';
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.