0

私たちのマジェント 1.6.2 は、製品のフラット データを再インデックス化できません。また、「インデックスの再作成プロセスで問題が発生しました」と表示されることもあります。

他のユーザーの経験から多くの解決策を試しました。検索結果はありません。大量の製品をインポートしましたが、それが再インデックスの問題の原因であるかどうかはわかりません。

理想的なソリューションは何でしょうか?

これは私がシェルで使用したコマンドです:

php /usr/local/lsws/fcgi-bin/lsphp5 /home/user/domains/my domain../public_html/shell/indexer.php 

これは、exception.log からのエラーです。

2012-08-09T14:55:43+00:00 DEBUG (7): Exception message: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`galagearbox/#sql-1662_1fc419`, CONSTRAINT `FK_CAT_PRD_FLAT_4_ENTT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCA)
Trace: #0 /home/corecolu/public_html/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 /home/corecolu/public_html/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#2 /home/corecolu/public_html/lib/Zend/Db/Statement.php(300): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#3 /home/corecolu/public_html/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#4 /home/corecolu/public_html/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('ALTER TABLE `ca...', Array)
#5 /home/corecolu/public_html/lib/Varien/Db/Adapter/Pdo/Mysql.php(389): Zend_Db_Adapter_Pdo_Abstract->query('ALTER TABLE `ca...', Array)
#6 /home/corecolu/public_html/lib/Varien/Db/Adapter/Pdo/Mysql.php(327): Varien_Db_Adapter_Pdo_Mysql->query('ALTER TABLE `ca...')
#7 /home/corecolu/public_html/lib/Varien/Db/Adapter/Pdo/Mysql.php(2548): Varien_Db_Adapter_Pdo_Mysql->raw_query('ALTER TABLE `ca...')
#8 /home/corecolu/public_html/app/code/core/Mage/Catalog/Model/Resource/Product/Flat/Indexer.php(816): Varien_Db_Adapter_Pdo_Mysql->addForeignKey('FK_CAT_PRD_FLAT...', 'catalog_product...', 'entity_id', 'catalog_product...', 'entity_id', 'CASCADE', 'CASCADE')
#9 /home/corecolu/public_html/app/code/core/Mage/Catalog/Model/Resource/Product/Flat/Indexer.php(1390): Mage_Catalog_Model_Resource_Product_Flat_Indexer->prepareFlatTable(4)
#10 /home/corecolu/public_html/app/code/core/Mage/Catalog/Model/Product/Flat/Indexer.php(296): Mage_Catalog_Model_Resource_Product_Flat_Indexer->reindexAll()
#11 /home/corecolu/public_html/app/code/core/Mage/Catalog/Model/Product/Indexer/Flat.php(336): Mage_Catalog_Model_Product_Flat_Indexer->reindexAll()
#12 /home/corecolu/public_html/app/code/core/Mage/Index/Model/Process.php(207): Mage_Catalog_Model_Product_Indexer_Flat->reindexAll()
#13 /home/corecolu/public_html/app/code/core/Mage/Index/Model/Process.php(253): Mage_Index_Model_Process->reindexAll()
#14 /home/corecolu/public_html/app/code/core/Mage/Index/controllers/Adminhtml/ProcessController.php(124): Mage_Index_Model_Process->reindexEverything()
#15 /home/corecolu/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(420): Mage_Index_Adminhtml_ProcessController->reindexProcessAction()
#16 /home/corecolu/public_html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('reindexProcess')
#17 /home/corecolu/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#18 /home/corecolu/public_html/app/code/core/Mage/Core/Model/App.php(349): Mage_Core_Controller_Varien_Front->dispatch()
#19 /home/corecolu/public_html/app/Mage.php(640): Mage_Core_Model_App->run(Array)
#20 /home/corecolu/public_html/index.php(83): Mage::run('', 'store')
#21 {main}
4

3 に答える 3

5

Magento での再インデックス エラーには多くの理由が考えられるため、考えられるすべてのエラーをカバーする「理想的な」ソリューションは決して存在しないのではないかと心配しています。

技術的ではないエラー メッセージを投稿したので、管理者のバックエンドを使用して製品のフラット データの再インデックスを試みたところ、エラー メッセージが表示されたと思います。

もう一度インデックスを再作成することをお勧めしますが、shell/indexer.php今回は次のようにします。

/usr/bin/php -f /abs/path/to/shell/indexer.php -- --reindex catalog_product_flat

これにより、インデックスの再作成が失敗した場合に、より意味のある技術的なエラー メッセージが表示されます。

以下は、どのインデックスにどのパラメーターを使用するかを示すリストです。

catalog_product_attribute     Product Attributes
catalog_product_price         Product Prices
catalog_url                   Catalog URL Rewrites
catalog_product_flat          Product Flat Data
catalog_category_flat         Category Flat Data
catalog_category_product      Category Products
catalogsearch_fulltext        Catalog Search Index
cataloginventory_stock        Stock Status
tag_summary                   Tag Aggregation Data

アップデート

投稿に追加した例外は、間の参照整合性が

catalog_product_flat_4.entity_id

catalog_product_entity.entity_id

破損していることが判明しました。

通常、これは、一部のレコードnullが fieldcatalog_product_entity.entity_idに含まれていることを意味し、既存entity_idの が含まれていると予想されます。

これを修正する前に、まずデータベースをバックアップしてください

ここで、破損したレコードを見つけるために、データベースに次のクエリを実行します。

SELECT
    a.entity_id
FROM
    catalog_product_flat_4 AS a
LEFT JOIN
    catalog_product_entity AS b ON a.entity_id = b.entity_id
WHERE
    ISNULL(b.entity_id)

このentity_idクエリで見つかったentity_idは、テーブル内のcatalog_product_flat_4であり、破損しており、削除する必要があります。

内の適切なレコードを削除してから、インデックスの再作成catalog_product_flat_4を再試行してください。

于 2012-08-13T05:49:14.647 に答える
0

Magento プログラムでインデックス ID コードを再作成

1 つの catalog_product_attribute

2 カタログ_商品_価格

3 カタログ URL

4 catalog_product_flat

5 カタログ_カテゴリ_フラット

6 catalog_category_product

7 カタログsearch_stock

8 カタログinventory_stock

9 tag_summary

for ($i = 1; $i <= 9; $i++) {

$process = Mage::getModel('index/process')->load($i);

$process->reindexAll();

}

于 2013-07-04T08:24:14.590 に答える