magento 1.7: product_flat_data kann nicht neu indiziert werden

10

Beim Versuch, meine Magento-Datenbank neu zu indizieren, wird die folgende Fehlermeldung angezeigt.

Unbekannter Fehler des Product Flat Data-Indexprozesses: Ausnahme 'PDOException' mit der Meldung 'SQLSTATE [23000]: Integritätsbedingung> Verletzung: 1452 Untergeordnete Zeile kann nicht hinzugefügt oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl> ( d014505f., CONSTRAINT> FK_CAT_PRD_FLAT_1_ENTT_ID_CAT_PRD_ENTT_ENTT_IDFOREIGN KEY ( entity_id)> REFERENZEN catalog_product_entity(`e) 'in> /www/htdocs/w00f5624/lib/Zend/Db/Statement/Pdo.php:228

Wie behebe ich das?

David Vendryes
quelle

Antworten:

28

Wie von Sander korrekt angegeben, verursachen gelöschte Produkte, die noch in der flachen Produkttabelle vorhanden sind, diesen Fehler. Das Abschneiden der gesamten Tabelle ist jedoch nicht erforderlich. Sie finden diese Produkte anhand dieser SQL-Abfrage:

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 ) 

Sie müssen dann diese Elemente löschen, was mit dieser SQL-Abfrage erfolgen kann:

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 ) 

Entnommen von hier: http://www.avs-webentwicklung.de/nc/blog/artikel/magento-fehler-beim-index-aufbau-sofortmassnahmen.html

Fragen Sie mich, wenn Sie weitere Ratschläge benötigen.

simonthesorcerer
quelle
Schöne Abfrage, verwenden Sie sie für eine regelmäßige Bereinigungsaufgabe oder nur bei Bedarf?
Sander Mangel
Danke :) Die Credits für den ersten gehören jedoch dem Autor des Links. Ich benutze sie nur, wenn ein solcher Fehler auftritt, meistens wenn Daten direkt aus der Datenbank gelöscht werden, dh mit MAGMI. Und sie sind immer noch selten. Ich musste es noch nicht regelmäßig verwenden, obwohl ich denke, dass es möglich wäre. Wenn Sie Produkte manuell verwalten, kümmert sich Magento beim Speichern / Löschen um die Indextabellen (wenn die Indizes ordnungsgemäß konfiguriert sind).
Simonthesorcerer
Einige Erklärungen finden Sie hier: catgento.com/…
Dmytro Zavalkin
@ Simonthesorcerer Danke, es hilft mir, diesen Fehler zu beheben :)
Bijal Bhavsar
4

Ich hatte dieses Problem schon einmal. Ich habe es gelöst, indem ich die Tabellen product_flat_data abgeschnitten und anschließend neu indiziert habe. Es wird durch nicht vorhandene Produkte verursacht, die noch in der Tabelle vorhanden sind.

Sander Mangel
quelle
Hallo Sander, ich habe die Lösung ausprobiert, aber mir ist nichts passiert. Ich habe auch den catalog_product_flat_1 abgeschnitten, aber der Indexer für Produktattribute funktioniert nicht.
Sarvagya