magento SQLSTATE[23000]: нарушение ограничения целостности: 1062 повторяющаяся запись "363624" для ключа "PRIMARY"

Я перенес установку mgento, выполнив следующие действия:

  1. скопировать все файлы
  2. экспортировал db
  3. импортировал БД с помощью MySQL workbench
  4. изменил base_url на новый домен
  5. обновленная.xml для правильных настроек

теперь я получаю:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '363624' for key 'PRIMARY'

Я искал в БД этот ключ 363624, но он не дублируется, как говорится в сообщениях

как могу я это решить ?

6 ответов


Он не дублируется, а, скорее, что-то должно быть попытка дублировать его.

Как вы экспортировали базу данных? Я бы проверил, что сброшенный файл SQL имеет строку"УСТАНОВИТЬ FOREIGN_KEY_CHECKS=0; " или подобное наверху.

Если нет, я бы отбросил базу данных и добавил эту строку в верхнюю часть файла:

УСТАНОВИТЬ FOREIGN_KEY_CHECKS=0;

... и эта строка внизу:

установить FOREIGN_KEY_CHECKS=1;

... тогда попробуй еще раз.


это помогло мне (очистка таблицы):

введите базу данных Magento и выполните следующий sql-запрос:

TRUNCATE dataflow_batch_export ; 
TRUNCATE dataflow_batch_import ; 
TRUNCATE log_customer ; 
TRUNCATE log_quote ; 
TRUNCATE log_summary ; 
TRUNCATE log_summary_type ; 
TRUNCATE log_url ; 
TRUNCATE log_url_info ; 
TRUNCATE log_visitor ; 
TRUNCATE log_visitor_info ; 
TRUNCATE log_visitor_online ; 
TRUNCATE report_event ;

Я получал ту же ошибку.

для меня оказывается, что экспорт занимал так много времени с сайтом, оставаясь "живым", что конец экспорта был не синхронизирован с началом.

в частности, в таблице "log_visitor_info" было около 100 больше записей, чем в некоторых других связанных таблицах журнала посетителей, поэтому БД пытается создать идентификатор записи из другой таблицы, которая уже существует здесь.

Я просто удалил последние 100 или около того записей из этого конкретная таблица и вещи работали снова без ошибки. Кроме того, похоже, что вы можете размять ключ f5, пока вы не пройдете мимо этого уже существующего ID, и Magento снова начнет работать.

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


в моем случае проблема заключалась в UTF-8 без кодировки BOM в текстовом редакторе. Я перешел на UTF-8 с BOM, и все работает нормально.


если ошибка отображается для таблицы 'cataloginventory_stock_item' having 'UNQ_CATALOGINVENTORY_STOCK_ITEM_PRODUCT_ID_STOCK_ID' index,

тогда, пожалуйста, убедитесь, что вы передаете другой SKU продукта из вашего скрипта.


запустите этот sql-запрос в базе данных magento.

TRUNCATE dataflow_batch_export ;

TRUNCATE dataflow_batch_import ; 

TRUNCATE log_customer ; 

TRUNCATE log_quote ; 

TRUNCATE log_summary ; 

TRUNCATE log_summary_type ; 

TRUNCATE log_url ; 

TRUNCATE log_url_info ; 

TRUNCATE log_visitor ; 

TRUNCATE log_visitor_info ; 

TRUNCATE log_visitor_online ; 

TRUNCATE report_event ;

сначала вам нужно проверить структуру таблицы "log_visitor_info". В этой таблице поле "visitor_id" должно иметь значение по умолчанию null. Если значение по умолчанию задано как что-либо, вы должны запустить этот запрос ниже, иначе вы оставите его ниже запроса, просто выполните вышеуказанный запрос.

ALTER TABLE `log_visitor_info` CHANGE `visitor_id` `visitor_id` BIGINT(20) UNSIGNED NOT NULL COMMENT 'Visitor ID';