magento SQLSTATE[23000]: нарушение ограничения целостности: 1062 повторяющаяся запись "363624" для ключа "PRIMARY"
Я перенес установку mgento, выполнив следующие действия:
- скопировать все файлы
- экспортировал db
- импортировал БД с помощью MySQL workbench
- изменил base_url на новый домен
- обновленная.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';