Jeśli nie jesteś w stanie przeindeksować płaskiego katalogu produktów, to może ten wpis Cię zainteresuje.
Czasem zdarza się, że z bliżej nieokreślonego powodu nie da się przeindeksować danych i w adminie Magento nie ma konkretnego błędu. Warto wtedy użyć indexera z poziomu wiersza poleceń.
Wchodzimy w katalog shell i odpalamy konsolowy odpowiednik zakładki w adminie:
php indexer.php reindexall
Jest to polecenie, które przeindeksuje nam wszystkie indeksy, a przy okazji wyświetli cały komunikat o ewentualnym błędzie.
W moim przypadku problem tkwił w płaskim indeksie produktów:
Product Flat Data index process unknown error: exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`104_guepardobuty`., CONSTRAINT `FK_CAT_PRD_FLAT_1_ENTT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_ent)'
Spowodowane to było tym, że wcześniej skasowałem pewne produkty, ale nie zostały one usunięte z indeksu.
Aby sprawdzić o co chodzi odpalamy na przykład PHPMyAdmina i zapuszczamy takie zapytanie:
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 );
Zwrócimy nam id wszystkich wpisów, które powodują problem. Trzeba je usunąć z tabeli catalog_product_flat_1.
Po usunięci błędnych produktów zapuszczamy index ponownie:
php indexer.php --reindex catalog_product_flat
You must log in to post a comment.