SQLSTATE[23000]: Нарушение ограничения целостности: 1062 Повторяющаяся запись "1" для ключа "ИДЕНТИФИКАТОР ПРИРАЩЕНИЯ ЗАКАЗА НА ПРОДАЖУ ИДЕНТИФИКАТОР МАГАЗИНА"
Я использую этот инструмент переноса данных, Когда я перехожу с magento 1.9.3.2 на magento 2.3, получаю ошибку ниже,
СОСТОЯНИЕ SQLSTATE[23000]: Нарушение ограничения целостности: 1062 Повторяющихся записи "1" для ключа "SALES_ORDER_INCREMENT_ID_STORE_ID"
Я много раз пытался загрузить свежую базу данных, но все равно получал эту проблему
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;