Атрибуты продукта не могут быть переиндексированы

8

Я получаю эту ошибку при попытке переиндексировать «Атрибуты продукта». Может кто-нибудь подсказать, в чем может быть проблема и возможное решение

Неустранимая ошибка: необработанное исключение «PDOException» с сообщением «SQLSTATE [23000]: нарушение ограничения целостности: 1062 Повторяющаяся запись« 2828-148-1-471 »для ключа« PRIMARY »в E: \ xampp \ htdocs \ magento \ lib \ Zend \ Db \ Statement \ Pdo.php: 228 Трассировка стека: # 0 E: \ xampp \ htdocs \ magento \ lib \ Zend \ Db \ Statement \ Pdo.php (228): PDOStatement-> execute (Array) # 1 E : \ xampp \ htdocs \ magento \ lib \ Varien \ Db \ Statement \ Pdo \ Mysql.php (110): Zend_Db_Statement_Pdo -> _ execute (Array) # 2 E: \ xampp \ htdocs \ magento \ app \ code \ core \ Zend \ Db \ Statement.php (291): Varien_Db_Statement_Pdo_Mysql -> _ execute (Array) # 3 E: \ xampp \ htdocs \ magento \ lib \ Zend \ Db \ Adapter \ Abstract.php (480): Zend_Db_Statement-> execute (Array) # 4 E: \ xampp \ htdocs \ magento \ lib \ Zend \ Db \ Adapter \ Pdo \ Abstract.php (238): Zend_Db_Adapter_Abstract-> query ('INSERT INTOca...', Array) #5 E:\xampp\htdocs\magento\lib\Varien\Db\Adapter\Pdo\Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTOca ... ', Array) # 6 E: \ xampp \ htdocs \ magento \ lib \ Varien \ Db \ Adapter \ Pdo \ Mysql.php (1998): Varien_Db_Adapter_Pdo_Mysql в E: \ xampp \ htdocs \ magento \ lib \ Zend \ Db \ Statement \ Pdo.php в строке 234

Prashanta
источник
Вы импортировали базу данных через phpmyadmin?
Flyingmana
Нет, я просто добавляю продукты программно @Flyinglama
Prashanta

Ответы:

15

Как интерпретировать сообщение об ошибке

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2828-148-1-471' 
for key 'PRIMARY

В случае индексатора атрибутов продукта это означает, что существует ошибка ограничения при сохранении записи в catalog_product_index_eav_idxтаблице.

2828-148-1-471 относится к:

  • идентификатор объекта продукта: 2828
  • идентификатор атрибута: 148
  • идентификатор магазина: 1
  • значение: 471

Возможное происхождение проблемы

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

Вы можете проверить это, выполнив следующий запрос:

SELECT * FROM `catalog_product_entity_varchar` 
where entity_id = 2828 and attribute_id = 148 and store_id = 1;

Я предполагаю, что идентификатор 471 будет указан несколько раз в столбце value. Каждый идентификатор должен быть указан только один раз в этом столбце.

Вы используете импортер для добавления данных о продукте в Magento?

Vicky
источник
Да, это простой программный импорт в Инчу
Прашанта
Любое решение по этому вопросу, да, это мульти-выбор
Prashanta
7

Ниже решение работает для меня и может помочь другим:

2828-148-1-471 относится к:

идентификатор продукта: 2828 идентификатор атрибута: 148 идентификатор магазина: 1 значение: 471

Просто откройте продукт с идентификатором 2828, сохраните его и переиндексируйте снова.

это может решить вашу проблему

Суровый шах
источник
Какое решение для массового обновления?
DarkCowboy
3

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

Prashanta
источник