magento 1.7:无法重新索引product_flat_data


10

尝试重新索引我的magento数据库时收到以下错误。

产品平面数据索引过程未知错误:带有消息'SQLSTATE [23000]的异常'PDOException':完整性约束>违反:1452无法添加或更新子行:外键约束失败>(d014505f。,CONSTRAINT> FK_CAT_PRD_FLAT_1_ENTT_ID_CAT_PRD_ENTT_ENTT_IDFOREIGN KEY(entity_id)> catalog_product_entity> /www/htdocs/w00f5624/lib/Zend/Db/Statement/Pdo.php:228中的参考(`e)'

我该如何解决??

Answers:


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

问我是否需要更多建议。


很好的查询,您将它们用于定期清理任务还是仅在需要时才使用?
Sander Mangel

谢谢:)第一个的功劳归链接的作者所有。我仅在发生此类错误时才使用它们,这主要是当直接从数据库(即使用MAGMI)删除数据时。而且它们仍然很少见。尽管我认为这是可能的,但我不必定期使用它。当您手动管理产品时,Magento会在保存/删除时(正确配置索引时)处理索引表。
simonthesorcerer 2013年

几点说明可以在这里找到:catgento.com/...
德米特罗Zavalkin

@simonthesorcerer谢谢,它可以帮助我解决此错误:)
Bijal

4

我以前有这个问题。我通过截断product_flat_data表并随后重新索引来解决了该问题。这是由表格中仍不存在的产品引起的。


您好桑德,我已经尝试了该解决方案,但对我而言却什么也没有发生,我也已截断了catalog_product_flat_1,但产品属性的索引器不起作用。
Sarvagya 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.