magento 1.7: No se puede reindexar product_flat_data

10

Recibo el siguiente error al intentar reindexar mi base de datos magento.

Error de proceso desconocido del índice de datos planos del producto: excepción 'PDOException' con mensaje 'SQLSTATE [23000]: restricción de integridad> violación: 1452 No se puede agregar o actualizar una fila secundaria: falla una restricción de clave externa> ( d014505f., CONSTRAINT> FK_CAT_PRD_FLAT_1_ENTT_ID_CAT_PRD_ENTT_ENTT_IDFOREIGN KEY ( entity_id)> REFERENCIAS catalog_product_entity(`e) 'en> /www/htdocs/w00f5624/lib/Zend/Db/Statement/Pdo.php:228

¿¿Cómo puedo solucionar esto??

David Vendryes
fuente

Respuestas:

28

según lo indicado por Sander correctamente, los productos eliminados que todavía están presentes en la tabla plana del producto causan este error. De todos modos, no será necesario truncar toda la tabla. Puede encontrar estos productos mediante esta consulta SQL:

SELECT pf1.entity_id
FROM catalog_product_flat_1 pf1
LEFT JOIN catalog_product_entity p ON pf1.entity_id = p.entity_id
WHERE ISNULL( p.entity_id ) 

Luego tendrá que eliminar estos elementos, lo que se puede hacer con esta consulta SQL:

DELETE pf1.*
FROM catalog_product_flat_1 pf1
LEFT JOIN catalog_product_entity p ON pf1.entity_id = p.entity_id
WHERE ISNULL( p.entity_id ) 

Tomado de aquí (alemán): http://www.avs-webentwicklung.de/nc/blog/artikel/magento-fehler-beim-index-aufbau-sofortmassnahmen.html

Pregúntame si necesitas más consejos.

simonthesorcerer
fuente
Buena consulta, ¿los usa para una tarea de limpieza periódica o solo cuando es necesario?
Sander Mangel
Gracias :) Sin embargo, los créditos para el primero pertenecen al autor del enlace. Solo los uso cuando se produce tal error, que es principalmente cuando los datos se eliminan directamente de la base de datos, es decir, con MAGMI. Y todavía son raros. Todavía no tenía que usarlo periódicamente, aunque creo que sería posible. Cuando administra productos manualmente, Magento se encarga de las tablas de índice al guardar / al eliminar (cuando los índices están configurados correctamente).
simonthesorcerer
Algunas explicaciones se pueden encontrar aquí: catgento.com/…
Dmytro Zavalkin
@simonthesorcerer Gracias, me ayuda a resolver este error :)
Bijal Bhavsar
4

He tenido este problema antes. Lo resolví truncando las tablas product_flat_data y luego reindexando. Es causado por productos no existentes que todavía están presentes en la tabla.

Sander Mangel
fuente
Hola Sander, he probado la solución, pero no me ha pasado nada. También he truncado catalog_product_flat_1 pero el indexador de los atributos del producto no funciona.
Sarvagya