Não foi possível reindexar os atributos do produto

8

Estou recebendo esse erro ao tentar reindexar "Atributos do produto". Alguém pode sugerir qual pode ser o problema e a possível solução

Erro fatal: exceção não capturada 'PDOException' com a mensagem 'SQLSTATE [23000]: Violação de restrição de integridade: 1062 Entrada duplicada' 2828-148-1-471 'para a chave' PRIMARY '' em E: \ xampp \ htdocs \ magento \ lib \ Zend \ Db \ Statement \ Pdo.php: 228 Rastreio de pilha: # 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 (Matriz) # 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 em E: \ xampp \ htdocs \ magento \ lib \ Zend \ Db \ Statement \ Pdo.php na linha 234

Prashanta
fonte
Você importou o banco de dados via phpmyadmin?
Flyingmana
Não, estou apenas adicionando os produtos de forma programática @Flyinglama
Prashanta

Respostas:

15

Como interpretar a mensagem de erro

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

No caso do indexador de atributo do produto, isso significa que há um erro de restrição ao salvar um registro na catalog_product_index_eav_idxtabela.

2828-148-1-471 refere-se a:

  • ID da entidade do produto: 2828
  • ID do atributo: 148
  • ID da loja: 1
  • valor: 471

Possível origem do problema

Estou assumindo que o atributo que está causando problemas é do tipo multiselecionado. Um valor vinculado várias vezes a um produto causará esse tipo de erro.

Você pode verificar isso executando a seguinte consulta:

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

Suponho que o ID 471 será listado várias vezes na coluna value. Todo ID deve ser listado apenas uma vez nessa coluna.

Você está usando um importador para adicionar dados do produto ao Magento?

Vicky
fonte
Sim, é a importação programática de produtos simples do inchoo
Prashanta
Qualquer solução sobre isso, sim, é um multi escolha
Prashanta
7

A solução abaixo funcionou para mim e pode ajudar outras pessoas:

2828-148-1-471 refere-se a:

ID da entidade do produto: 2828 ID do atributo: 148 ID da loja: 1 valor: 471

Basta abrir o produto com o ID 2828, salvá-lo e reindexar novamente.

isso pode resolver seu problema

Harsh Shah
fonte
Qual solução para atualização em massa?
DarkCowboy
3

Entendi, era um problema com os atributos suspensos de seleção múltipla. No meu script, às vezes o mesmo atributo era adicionado várias vezes, causando erro, postando essa resposta para alguém, se precisar de ajuda no futuro

Prashanta
fonte