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) '

どうすれば修正できますか?

回答:


28

サンダーが正しく述べたように、削除された製品が製品フラットテーブルに残っていると、このエラーが発生します。とにかく、テーブル全体を切り捨てる必要はありません。この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

あなたがもっとアドバイスが必要かどうか私に尋ねてください。


すばらしいクエリです。定期的なクリーンアップタスクに使用しますか、それとも必要な場合のみ使用しますか?
サンダーマンゲル

ありがとう:)最初のクレジットはリンクの作者に帰属します。このようなエラーが発生した場合のみ使用します。ほとんどの場合、データはデータベースから直接削除されます(MAGMIなど)。そして、それらはまだまれです。可能だとは思いますが、まだ定期的に使う必要はありませんでした。製品を手動で管理する場合、Magentoは保存時と削除時にインデックステーブルを処理します(インデックスが適切に構成されている場合)。
simonthesorcerer 2013年

いくつかの説明はここにあります:catgento.com/…–
Dmytro

@simonthesorcererありがとう、このエラーを解決するのに役立ちます:)
Bijal Bhavsar

4

以前にこの問題がありました。product_flat_dataテーブルを切り捨て、その後でインデックスを再作成することで解決しました。テーブルにまだ存在しない既存の製品が原因です。


サンダーこんにちは、私は解決策を試しましたが、何も起こらなかったので、catalog_product_flat_1も切り捨てましたが、製品属性のインデクサーが機能していません。
Sarvagya 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.