데이터 마이그레이션 Eav 단계 오류


11

이 문제가있는 사람이 있습니까?

데이터 마이그레이션> EAV 단계

SQLSTATE [23000] : 무결성 제한 조건 위반 : 1062 'EAV_ATTRIBUTE_SET_ENTITY_TYPE_ID_ATTRIBUTE_SET_NAME'키에 대한 중복 항목 '1-Migration_Default'


이것에 대한 해결책을 찾았습니까?
Gaurav Agrawal

답변:


4

이 오류는 마이그레이션 도구가 롤백하지 않고 (예 : 무결성 위반으로 인해) 데이터를 전송하지 못하고 다시 실행될 때 발생합니다. "Migration_Default"속성 세트를 작성하려고 시도했지만 데이터베이스에 이미 존재하므로 실패합니다.

당신이해야 할 일은 :

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

동일한 문제에 직면했습니다.이 값을 어디에서 변경할 수 있습니까?
Purushotam Sharma

1
어떤 가치? 무결성 제약 조건 위반을 일으키는 DB 행을 제거하는 방법은 무엇입니까? 색인 이름을보십시오. 제 경우에는 "URL_REWRITE_REQUEST_PATH_STORE_ID"였습니다. 첫 번째 부분은 문제가되는 레코드가있는 테이블의 이름입니다. 제 경우에는 url_rewrite (또는 더 정확하게는 my-prefix_url_rewrite)였습니다. REQUEST_PATH 및 STORE_ID는 함께 모일 때 고유해야하는 두 개의 열입니다. 필자의 경우 마이그레이션 도구는 request_path 아래에 "home"이 있고 store_id 아래에 1이있는 두 개의 레코드를 삽입하려고했습니다. 나는 첫 번째 것을 제거해야했습니다.
Mateusz

@Mateusz, 명령을 사용하면 -r db를 재설정하지 않고 처음부터 시작하지 않습니까? 때마다 복원 DB는 너무 시간 촬영 processs입니다
자파르 pinjar

@ jafarpinjar (또는 이것을 보는 다른 사람) 예 맞습니다. 매번 데이터베이스를 복원해야합니다. Magento 2의 설명서에서 : "처음부터 데이터 마이그레이션 도구를 실행하려면 --reset 인수를 사용하십시오.이 경우 이전에 마이그레이션 된 데이터가 복제되지 않도록 Magento 2 데이터베이스 덤프를 복원하는 것이 좋습니다."
WackGet

@Mateusz,이 오류가 있습니다. "무결성 제약 위반 : 1062 'WISHLIST_CUSTOMER_ID'키에 대한 중복 항목 '0'"
jafar pinjar

2

https://github.com/magento/data-migration-tool/issues/235#issuecomment-321923437 에서이 문제를 해결 한이 솔루션을 찾았습니다.

해결 방법은 eav_attribute_set 테이블의 "attribute_value_name"필드에 "Default"라는 이름을 포함하는 모든 값의 이름을 Magento 1 데이터베이스의 "Default_x"로 바꾸고 처음부터 마이그레이션을 실행하는 것입니다.

필자의 경우 이름이 "Default"인 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

@ Alfredo Lanzetta, M2로 성공적으로 마이그레이션했지만 사용자 정의 레이아웃 옵션에 문제가있는 것 같습니다. 나는 당신에 대한 당신의 통찰력을 원합니다. 내 질문 좀 봐주시겠습니까?
CodeForGood

1

내 경우 : 그것은 나에게 일어 났고 마이그레이션을 다시로드하기 전에 내 magento 2 데이터베이스의 백업을 가져와야했습니다.

귀하의 경우 : 아마도 데이터 마이그레이션을 다시로드해야 할 수도 있습니다.


안녕 @ 케빈, 재설정 명령은 설정을 재설정하지 않습니까? 처음부터 시작되지 않습니까? DB를 재설정해야 할 때마다?
jafar pinjar

@ jafarpinjar (또는 이것을 보는 다른 사람) 예 맞습니다. 매번 데이터베이스를 복원해야합니다. Magento 2의 설명서에서 : "처음부터 데이터 마이그레이션 도구를 실행하려면 --reset 인수를 사용하십시오.이 경우 이전에 마이그레이션 된 데이터가 복제되지 않도록 Magento 2 데이터베이스 덤프를 복원하는 것이 좋습니다."
WackGet

1

이 문제를 해결하려면

  1. 먼저 이미 마이그레이션 된 속성 세트를 확인해야합니다.
  2. 그런 다음 기본 속성 세트를 제외한 해당 속성 세트를 삭제하십시오.

SQL 쿼리 응용 프로그램이나 인터페이스를 통해이를 수행 할 수 있습니다.

DELETE FROM eav_attribute_set WHERE attribute_set_name != 'Default';

1

마이그레이션하는 데이터베이스 Magento 2를 다시 확인하십시오. 때때로 데이터 마이그레이션 도구에서 데이터베이스 이름을 변경하지 않았습니다.

새로운 Magento 인스턴스를 다시 설치하고 데이터 마이그레이션 도구에 데이터베이스 이름을 올바르게 추가하십시오.


0

Data-Migration-Tool은 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;
}

깃 허브


이것이 기본 키 복제와 다른 이유를 설명 할 수 있습니까?
domdambrogia 2018

0

내 경험으로는 샘플 데이터가 설치되어 있습니다. 그래서 다음 단계를 수행했습니다.

  1. 데이터베이스를 삭제했습니다
  2. 그런 다음 샘플 데이터없이 magento 2를 다시 설치하십시오.

그런 다음 마이그레이션 할 수 있습니다.


0

다음 SQL과 관련된 문제가 해결되었습니다.

무결성 제약 조건 위반 : 1062 키에 대한 중복 항목 '4- 이미지'– Magento 2

delete from eav_attribute_group WHERE attribute_group_name = 'Images';

그래서 뭔가를 시도

delete from eav_attribute_group WHERE attribute_group_name = 'Home';
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.