magento 1.7: невозможно переиндексировать product_flat_data

10

Я получаю следующую ошибку при попытке переиндексировать мою базу данных magento ..

Product Flat Процесс обработки данных индекса неизвестен: исключение «PDOException» с сообщением «SQLSTATE [23000]: ограничение целостности> нарушение: 1452 Не удается добавить или обновить d014505fдочернюю строку: ограничение внешнего ключа не выполняется> ( ., CONSTRAINT> FK_CAT_PRD_FLAT_1_ENTT_ID_CAT_PRD_ENTT_ENTT_IDFOREIGN KEY ( entity_id)> ССЫЛКИ catalog_product_entity(`e) 'в> /www/htdocs/w00f5624/lib/Zend/Db/Statement/Pdo.php:228

Как я могу это исправить??

Дэвид Вендриес
источник

Ответы:

28

как правильно заявлено Sander, удаленные продукты, все еще присутствующие в плоской таблице продуктов, вызывают эту ошибку. В любом случае, усечение всей таблицы не потребуется. Вы можете найти эти продукты по этому 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 ) 

Затем вам нужно будет удалить эти элементы, что можно сделать с помощью этого 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 ) 

Взято отсюда (немецкий): http://www.avs-webentwicklung.de/nc/blog/artikel/magento-fehler-beim-index-aufbau-sofortmassnahmen.html

Спросите меня, если вам нужно больше советов.

simonthesorcerer
источник
Хороший запрос, вы используете их для периодической очистки или только при необходимости?
Сандер Мангель
Спасибо :) Правда, титры за первый принадлежат автору ссылки. Я использую их только при возникновении такой ошибки, которая в основном происходит, когда данные удаляются непосредственно из базы данных, т.е. с помощью MAGMI. И они все еще редки. Мне не приходилось использовать его периодически, хотя я думаю, что это было бы возможно. Когда вы управляете продуктами вручную, Magento заботится о таблицах индексов при сохранении / удалении (когда индексы настроены правильно).
simonthesorcerer
Некоторые объяснения можно найти здесь: catgento.com/…
Дмитрий Завалкин
@simonthesorcerer Спасибо, это помогает мне решить эту ошибку :)
Биджал Бхавсар
4

У меня была эта проблема раньше. Я решил это путем усечения таблиц product_flat_data и последующей переиндексации. Это связано с тем, что в таблице все еще присутствуют несуществующие продукты.

Сандер Мангель
источник
Здравствуйте, Сандер, я попробовал решение, но ничего для меня не произошло, я также усек каталог catalog_product_flat_1, но индексатор для атрибутов продукта не работает.
Сарвагья