SQLSTATE[23000]: Нарушение ограничения целостности: 1062 Повторяющаяся запись "1" для ключа "ИДЕНТИФИКАТОР ПРИРАЩЕНИЯ ЗАКАЗА НА ПРОДАЖУ ИДЕНТИФИКАТОР МАГАЗИНА"


Я использую этот инструмент переноса данных, Когда я перехожу с magento 1.9.3.2 на magento 2.3, получаю ошибку ниже,

СОСТОЯНИЕ SQLSTATE[23000]: Нарушение ограничения целостности: 1062 Повторяющихся записи "1" для ключа "SALES_ORDER_INCREMENT_ID_STORE_ID"

Я много раз пытался загрузить свежую базу данных, но все равно получал эту проблему

Author: sumeet bajaj, 2019-02-18

1 answers

Ошибка возникает, если в базе данных Magento 1 есть заказы без набора increment_id. Вы можете проверить, есть ли у вас такие заказы, выполнив следующую инструкцию SQL в своей базе данных Magento 1:

select count(*) from sales_flat_order where increment_id = '' OR increment_id is NULL;

Если возвращаемое значение больше 0, вам следует обновить таблицы sales_flat_order и sales_flat_order_grid таким образом, чтобы убедиться, что все ваши заказы имеют идентификаторы increment_id и они уникальны.

Если вы найдете incrment_ids в таблице sales_flat_order_grid для всех заказов, просто возьмите значения оттуда с помощью следующие государственные деятели:

update sales_flat_order o 
join sales_flat_order_grid g 
    on o.entity_id = g.entity_id  
set o.increment_id = g.increment_id 
where o.increment_id = '' OR o.increment_id is NULL;

Если вы не найдете заказов без какого-либо increment_id, возможно, лучшим вариантом будет создать произвольные increment_id. Например, вы можете использовать инструкцию обновления SQL, которая создает increment_id на основе entity_id и префикса по вашему выбору (просто замените префикс в примерах инструкций чем-то, что не противоречит существующим идентификаторам приращения):

update sales_flat_order set increment_id = concat ('990000', entity_id) where increment_id is null;
update sales_flat_order_grid set increment_id = concat ('990000', entity_id) where increment_id is null;
 1
Author: HelgeB, 2019-02-19 14:22:34