2013-04-07 1 views
5

я мигрировал установка mgento 'Primary' делает следующий:Magento SQLSTATE [23000]: Integrity нарушение ограничения: 1062 Дублированного запись '363624' для ключа

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

теперь им получать:

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

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

, как я могу решить эту проблему?

+0

Какая таблица дает вам эту ошибку? – seanbreeden

ответ

8

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

Как вы экспортировали базу данных? Я бы проверял, что у сброшенного файла SQL есть строка «SET FOREIGN_KEY_CHECKS = 0;» или аналогичная в верхней части.

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

SET FOREIGN_KEY_CHECKS = 0;

... и эта линия на дно:

SET FOREIGN_KEY_CHECKS = 1;

... затем повторите попытку.

+0

привет, я получаю ту же ошибку, но моя проблема в том, что я не могу отказаться от базы данных, так как эта проблема началась недавно. У меня слишком много продуктов и данных. Как вы можете применить это решение к моей ситуации? Спасибо. –

+0

Не думаете ли вы, что это плохая идея отключить проверки внешнего ключа? Это по какой-то причине. Это не может быть долгосрочным решением. – Chiragit007

+0

Комбинация этого решения и решения Oscars работала для меня – richelliot

5

У меня была такая же ошибка.

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

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

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

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

+2

Этот ответ был настолько полезен - я нашел, сравнивая идентификаторы таблицы log_visitor_info с сгенерированным идентификатором в сообщении об ошибке, что на самом деле это было около 10 записей из синхронизации. Следовательно, нажав обновление, как вы предполагаете, ок. 10 раз исправил это для меня. –

27

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

Введите вашу базу данных 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 ; 
+0

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

+0

Комбинация этого решения и решения redjam13 работала для меня – richelliot

0

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

+0

Это довольно странно, учитывая, что Magento рекомендует UTF-8 без спецификации для всего. – versedi

0

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

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

+3

Если вы дадите больше объяснений причины проблемы и *, как ваше решение решит проблему, это может быть хорошим ответом. Я не уверен, как это решает проблему, так как речь идет о мигрировании пурпурного. –

0

Запустите этот запрос 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'; 
Смежные вопросы

 Смежные вопросы