Błąd kroku migracji Eav

11

Ktoś ma ten problem?

migracja danych> EAV Step

SQLSTATE [23000]: Naruszenie ograniczenia integralności: 1062 Zduplikowany wpis „1-Migration_Default” dla klucza „EAV_ATTRIBUTE_SET_ENTITY_TYPE_ID_ATTRIBUTE_SET_NAME”

Richard
źródło
Czy znalazłeś jakieś rozwiązanie tego problemu?
Gaurav Agrawal

Odpowiedzi:

4

Ten błąd występuje, gdy narzędzie migracji nie przesyła danych (np. Z powodu naruszenia integralności) bez wycofywania i jest uruchamiane ponownie. Próbuje utworzyć zestaw atrybutów „Migration_Default” i kończy się niepowodzeniem, ponieważ jest on już obecny w bazie danych.

Co musisz zrobić, to:

1) Przywróć bazę danych Magento 2.0 z kopii, którą (mam nadzieję) wykonałeś przed uruchomieniem narzędzia migracji.

2) Uruchom ponownie narzędzie do migracji i sprawdź, czy nie wystąpił pierwszy błąd. W moim przypadku było to:

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

3) Napraw problem (musiałem ręcznie usunąć wiersz w DB).

Powtarzaj kroki, aż usuniesz wszystkie błędy i zobaczysz słodko brzmiący komunikat:

Migration completed
Mateusz
źródło
Mam ten sam problem: gdzie mogę zmienić tę wartość?
Purushotam Sharma
1
Która wartość Jak usunąć wiersz DB, który powoduje naruszenie ograniczenia integralności? Spójrz na nazwę indeksu. W moim przypadku był to „URL_REWRITE_REQUEST_PATH_STORE_ID”. Pierwsza część to nazwa tabeli z rekordem naruszającym prawo. W moim przypadku był to url_rewrite (a dokładniej my-prefix_url_rewrite). REQUEST_PATH i STORE_ID to dwie kolumny, które razem muszą być unikalne. W moim przypadku narzędzie migracji próbowało wstawić dwa rekordy z „home” pod request_path i 1 pod store_id. Musiałem usunąć pierwszy.
Mateusz
@ Mateusz, jeśli użyjemy komendy, -r nie zresetuje ona bazy danych i nie zacznie od początku? za każdym razem, gdy przywracanie
bazy danych
@jafarpinjar (lub ktokolwiek inny, kto na to patrzy) Tak, to prawda. Za każdym razem musisz przywrócić bazę danych. Z dokumentacji Magento 2: „Aby wymusić uruchomienie narzędzia do migracji danych od samego początku, użyj argumentu --reset. W takim przypadku zalecamy przywrócenie zrzutu bazy danych Magento 2, aby zapobiec duplikowaniu wcześniej migrowanych danych”.
WackGet
@Mateusz, mam ten błąd, „Naruszenie ograniczenia integralności: 1062 Zduplikowany wpis„ 0 ”dla klucza„ WISHLIST_CUSTOMER_ID ””
jafar pinjar
2

Znalazłem rozwiązanie, które rozwiązało dla mnie ten problem https://github.com/magento/data-migration-tool/issues/235#issuecomment-321923437

Rozwiązaniem jest zmiana nazw wszystkich wartości zawierających nazwę „Default” w polu „nazwa_atrybuty” w tabeli zestawu atrybutów eav na „Default_x” w bazie danych Magento 1 i uruchomienie migracji od zera.

W moim przypadku było 9 rekordów o nazwie „Domyślnie”. Więc przemianowałem je na Default_1 na Default_9 i działało idealnie!

Alfredo Lanzetta
źródło
Dzięki, to też działało dla mnie. Następnie dostałem powiązany błąd duplikatu klucza EAV_ATTRIBUTE_GROUP_ATTRIBUTE_SET_ID_ATTRIBUTE_GROUP_CODEi rozwiązałem go przez podobne podejście:UPDATE eav_attribute_group SET attribute_group_name = CONCAT(attribute_group_name, "_", attribute_set_id) WHERE attribute_group_name = "General";
WackGet
@Alfredo Lanzetta, udało mi się przeprowadzić migrację do M2, ale mam problem z opcją niestandardowego układu. Chciałbym wasze spostrzeżenia na ten sam temat. Czy mógłbyś rzucić okiem na moje pytanie?
CodeForGood
1

W moim przypadku : zdarzyło mi się i musiałem zaimportować kopię zapasową bazy danych magento 2 przed ponownym załadowaniem migracji.

W twoim przypadku : być może musiałeś ponownie załadować migrację danych.

Kevin Thomas
źródło
cześć @Kevin, polecenie resetowania nie spowoduje zresetowania ustawień? nie zacznie się od początku? za każdym razem trzeba zresetować db?
jafar pinjar
@jafarpinjar (lub ktokolwiek inny, kto na to patrzy) Tak, to prawda. Za każdym razem musisz przywrócić bazę danych. Z dokumentacji Magento 2: „Aby wymusić uruchomienie narzędzia do migracji danych od samego początku, użyj argumentu --reset. W takim przypadku zalecamy przywrócenie zrzutu bazy danych Magento 2, aby zapobiec duplikowaniu wcześniej migrowanych danych”.
WackGet
1

Aby rozwiązać ten problem,

  1. Najpierw musisz sprawdzić, czy zostały już zmigrowane zestawy atrybutów.
  2. Następnie usuń te zestawy atrybutów oprócz domyślnego.

Możesz to zrobić za pomocą aplikacji lub interfejsu zapytań SQL.

DELETE FROM eav_attribute_set WHERE attribute_set_name != 'Default';
Stevie G.
źródło
1

Sprawdź dwukrotnie swoją migrującą bazę danych Magento 2. Czasami Nie zmieniliśmy nazwy bazy danych w narzędziu do migracji danych.

Ponownie zainstaluj nową instancję Magento i poprawnie dodaj nazwę bazy danych w narzędziu do migracji danych

Arunprabakaran M
źródło
0

Narzędzie do migracji danych nie odbiera danych ze źródła w utf8.
Oto proste rozwiązanie tego problemu:

Edytować: 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

Polarny
źródło
Czy możesz wyjaśnić, dlaczego miałoby to wpływ na duplikowanie klucza podstawowego?
domdambrogia
0

Z mojego doświadczenia wynika, że ​​zainstalowano przykładowe dane. Zrobiłem więc następujące kroki.

  1. Upuściłem bazę danych
  2. Następnie ponownie zainstaluj Magento 2 bez przykładowych danych.

Następnie mogę przeprowadzić migrację.

użytkownik1554046
źródło
0

Naprawiono mój problem z następującymi sql:

Naruszenie ograniczenia integralności: 1062 Zduplikowany wpis „4-obrazy” dla klucza - Magento 2

delete from eav_attribute_group WHERE attribute_group_name = 'Images';

Więc spróbuj czegoś

delete from eav_attribute_group WHERE attribute_group_name = 'Home';
MHK Developer
źródło