Помилка кроку міграції даних Eav


11

Хтось має цю проблему?

міграція даних> EAV Step

SQLSTATE [23000]: Порушення обмеження цілісності: 1062 Дублікат запису "1-міграція_За умовчанням" для ключа "EAV_ATTRIBUTE_SET_ENTITY_TYPE_ID_ATTRIBUTE_SET_NAME"


Ви знайшли рішення для цього?
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) Виправити проблему (мені довелося вручну видалити рядок у БД).

Повторіть дії, поки не очистите всі помилки та не побачите повідомлення про солодке звучання:

Migration completed

Я зіткнувся з тим же питанням: Де я можу змінити це значення?
Пурушотам Шарма

1
Яке значення? Як видалити рядок БД, що викликає порушення обмеження цілісності? Подивіться назву індексу. У моєму випадку це було "URL_REWRITE_REQUEST_PATH_STORE_ID". Перша його частина - це назва таблиці із записом порушника. У моєму випадку це був url_rewrite (а точніше my-prefix_url_rewrite). REQUEST_PATH і STORE_ID - це два стовпчики, які при складанні разом повинні бути унікальними. У моєму випадку інструмент міграції намагався вставити два записи з "домашнім" під request_path та 1 під store_id. Мені довелося зняти перший.
Матеуш

@Mateusz, якщо ми використовуємо команду, -r вона не скине db і почне з початку? кожен раз, коли відновлення db занадто багато часу займає
процеси

@jafarpinjar (або хтось інший, хто дивиться на це) Так, це правильно. Вам потрібно щоразу відновлювати базу даних. З документації Magento 2: "Щоб змусити Інструмент міграції даних запускатися з самого початку, використовуйте аргумент --reset. У цьому випадку рекомендуємо відновити дамп бази даних Magento 2, щоб запобігти дублюванню раніше перенесених даних."
WackGet

@Mateusz, у мене є ця помилка, "Порушення обмеження цілісності: 1062 Дублікат" 0 "для ключа" WISHLIST_CUSTOMER_ID ""
jafar pinjar

2

Я знайшов це рішення, яке вирішило для мене це питання https://github.com/magento/data-migration-tool/isissue/235#issuecomment-321923437

Рішенням є перейменування всіх значень, що містять ім’я "За замовчуванням" у полі "attribute_value_name" таблиці eav_attribute_set у "Default_x" в базі даних Magento 1 та запустити міграцію з нуля.

У моєму випадку було 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, перш ніж перезавантажувати міграцію.

У вашому випадку : Можливо, вам довелося перезавантажити міграцію даних вдруге.


привіт @Kevin, команда скидання не скине налаштування? це не почнеться з початку? щоразу потрібно скидати 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;
}

GitHub


Чи можете ви пояснити, чому це змінило б копіювання первинного ключа?
domdambrogia

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';
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.