magento 1.7: Nie można ponownieindeksować danych_produktu

10

Podczas próby ponownego indeksowania mojej bazy danych Magento pojawia się następujący błąd ..

Produkt Płaski proces indeksu danych nieznany błąd: wyjątek „PDOException” z komunikatem „SQLSTATE [23000]: Ograniczenie integralności> naruszenie: 1452 Nie można dodać lub zaktualizować wiersza podrzędnego: ograniczenie klucza obcego kończy się niepowodzeniem> ( d014505f., CONSTRAINT> FK_CAT_PRD_FLAT_1_ENTT_ID_CAT_PRD_ENTT_ENTT_IDFOREIGN KEY ( entity_id)> ODNIESIENIA catalog_product_entity(`e) 'w> /www/htdocs/w00f5624/lib/Zend/Db/Statement/Pdo.php:228

Jak to naprawić?

David Vendryes
źródło

Odpowiedzi:

28

jak poprawnie stwierdził Sander, usunięte produkty nadal obecne w płaskiej tabeli produktów powodują ten błąd. W każdym razie obcinanie całego stołu nie będzie konieczne. Możesz znaleźć te produkty według tego zapytania 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 ) 

Następnie będziesz musiał usunąć te elementy, co można zrobić za pomocą tego zapytania 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 ) 

Zaczerpnięte stąd (niemiecki): http://www.avs-webentwicklung.de/nc/blog/artikel/magento-fehler-beim-index-aufbau-sofortmassnahmen.html

Zapytaj mnie, czy potrzebujesz więcej porad.

simonthesorcerer
źródło
Ładne zapytanie, czy używasz ich do okresowego czyszczenia, czy tylko w razie potrzeby?
Sander Mangel
Dzięki :) Kredyty za pierwszy należą do autora linku. Używam ich tylko wtedy, gdy wystąpi taki błąd, głównie wtedy, gdy dane są usuwane bezpośrednio z bazy danych, tj. Za pomocą MAGMI. I wciąż są rzadkie. Nie musiałem go jeszcze używać okresowo, choć myślę, że byłoby to możliwe. Podczas ręcznego zarządzania produktami Magento dba o tabele indeksów przy zapisywaniu / usuwaniu (gdy indeksy są odpowiednio skonfigurowane).
simonthesorcerer
Niektóre wyjaśnienia można znaleźć tutaj: catgento.com/...
Dmytro Zavalkin
@simonthesorcerer Dzięki, pomaga mi rozwiązać ten błąd :)
Bijal Bhavsar
4

miałem ten problem wcześniej. Rozwiązałem go, obcinając tabele product_flat_data, a następnie ponownie indeksując. Jest to spowodowane nieistniejącymi produktami wciąż obecnymi w tabeli.

Sander Mangel
źródło
Witaj Sander, wypróbowałem rozwiązanie, ale nic mi się nie stało. Obciąłem także katalog_produktu_flat_1, ale moduł indeksujący atrybuty produktu nie działa.
Sarvagya,