При мерже 2х таблиц в magento на непонятном мне месте возникла ужасная ошибка:
exception ‘PDOException’ with message ‘SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry for key ‘UNQ_INCREMENT_ID” in /lib/Zend/Db/Statement/Pdo.php:228
Предыстория возникновения:
в демо базу с товарами, переносились заказы и покупатели из продакшена, мерж произошел на удивление быстро и красиво, а вот при проверке функционала (создание нового заказа) появился exception. Эта ошибка может появиться при создании нового заказа/инвоса/покупатели и т.д. после каких-то ручных манипуляций с базой.
Причина в моем случае: заказ с таким же id уже существовал в базе, т.к. мною не была синхронизирована таблица eav_entity_store
.
Решение, которое мне помогло:
1) берем последний номер заказа и запоминаем (если у вас проблема не в заказе, а какой-то другой сущности, то запоминает id этой сущности), например, 100002811
2) идем в таблицу eav_entity_type и смотрим entity_type_id сущности которая вас интересует (в моем случае это sales/order) и entity_type_id равен 5, запоминаем
3) идем в таблицу eav_entity_store и ищем в ней ваш entity_type_id (с предыдущего пункта, в моем случае это 5), после чего меняем значение increment_last_id на последнее id вашей сущности (из пункта 1), в моем случае 100002811.
Все.