dongyi7669 2015-06-29 02:26
浏览 96

在Magento 1.9.1.1中重新索引类别产品的问题

I am running Magento 1.9.1.1 on CLOUDLINUX 6.6 x86_64 standard – cpanel WHM 11.48.4 (build 4).

I get the following error when I run 'php indexer.php --reindex catalog_category_product':

Category Products index process unknown error:
exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`account_mage142`.`mg_catalog_category_product_index`, CONSTRAINT `FK_MG_CAT_CTGR_PRD_IDX_CTGR_ID_MG_CAT_CTGR_ENTT_ENTT_ID` FOREIGN KEY (`category_id`) REFERENCES `mg_catalog_category_entity`)' in /home/account/public_html/magento/lib/Zend/Db/Statement/Pdo.php:228
Stack trace:
#0 /home/account/public_html/magento/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 /home/account/public_html/magento/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#2 /home/account/public_html/magento/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#3 /home/account/public_html/magento/lib/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
#4 /home/account/public_html/magento/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `mg...', Array)
#5 /home/account/public_html/magento/lib/Varien/Db/Adapter/Pdo/Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `mg...', Array)
#6 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Resource/Abstract.php(179): Varien_Db_Adapter_Pdo_Mysql->query('INSERT INTO `mg...')
#7 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Resource/Helper/Mysql4.php(49): Mage_Index_Model_Resource_Abstract->insertFromSelect(Object(Varien_Db_Select), 'mg_catalog_cate...', Array, false)
#8 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Resource/Abstract.php(153): Mage_Index_Model_Resource_Helper_Mysql4->insertData(Object(Mage_Catalog_Model_Resource_Category_Indexer_Product), Object(Varien_Db_Select), 'mg_catalog_cate...', Array, false)
#9 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Resource/Abstract.php(113): Mage_Index_Model_Resource_Abstract->insertFromTable('mg_catalog_cate...', 'mg_catalog_cate...', false)
#10 /home/account/public_html/magento/app/code/core/Mage/Catalog/Model/Resource/Category/Indexer/Product.php(935): Mage_Index_Model_Resource_Abstract->syncData()
#11 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Indexer/Abstract.php(143): Mage_Catalog_Model_Resource_Category_Indexer_Product->reindexAll()
#12 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Process.php(212): Mage_Index_Model_Indexer_Abstract->reindexAll()
#13 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Process.php(260): Mage_Index_Model_Process->reindexAll()
#14 /home/account/public_html/magento/shell/indexer.php(167): Mage_Index_Model_Process->reindexEverything()
#15 /home/account/public_html/magento/shell/indexer.php(215): Mage_Shell_Compiler->run()
#16 {main}

Next exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[23000]:

Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`account_mage142`.`mg_catalog_category_product_index`, CONSTRAINT `FK_MG_CAT_CTGR_PRD_IDX_CTGR_ID_MG_CAT_CTGR_ENTT_ENTT_ID` FOREIGN KEY (`category_id`) REFERENCES `mg_catalog_category_entity`), query was: INSERT INTO `mg_catalog_category_product_index` (`category_id`, `product_id`, `position`, `is_parent`, `store_id`, `visibility`) SELECT `mg_catalog_category_product_index_idx`.`category_id`, `mg_catalog_category_product_index_idx`.`product_id`, `mg_catalog_category_product_index_idx`.`position`, `mg_catalog_category_product_index_idx`.`is_parent`, `mg_catalog_category_product_index_idx`.`store_id`, `mg_catalog_category_product_index_idx`.`visibility` FROM `mg_catalog_category_product_index_idx` ON DUPLICATE KEY UPDATE `category_id` = VALUES(`category_id`), `product_id` = VALUES(`product_id`), `position` = VALUES(`position`), `is_parent` = VALUES(`is_parent`), `store_id` = VALUES(`store_id`), `visibility` = VALUES(`visibility`)' in /home/account/public_html/magento/lib/Zend/Db/Statement/Pdo.php:235
Stack trace:
#0 /home/account/public_html/magento/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#1 /home/account/public_html/magento/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#2 /home/account/public_html/magento/lib/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
#3 /home/account/public_html/magento/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `mg...', Array)
#4 /home/account/public_html/magento/lib/Varien/Db/Adapter/Pdo/Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `mg...', Array)
#5 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Resource/Abstract.php(179): Varien_Db_Adapter_Pdo_Mysql->query('INSERT INTO `mg...')
#6 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Resource/Helper/Mysql4.php(49): Mage_Index_Model_Resource_Abstract->insertFromSelect(Object(Varien_Db_Select), 'mg_catalog_cate...', Array, false)
#7 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Resource/Abstract.php(153): Mage_Index_Model_Resource_Helper_Mysql4->insertData(Object(Mage_Catalog_Model_Resource_Category_Indexer_Product), Object(Varien_Db_Select), 'mg_catalog_cate...', Array, false)
#8 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Resource/Abstract.php(113): Mage_Index_Model_Resource_Abstract->insertFromTable('mg_catalog_cate...', 'mg_catalog_cate...', false)
#9 /home/account/public_html/magento/app/code/core/Mage/Catalog/Model/Resource/Category/Indexer/Product.php(935): Mage_Index_Model_Resource_Abstract->syncData()
#10 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Indexer/Abstract.php(143): Mage_Catalog_Model_Resource_Category_Indexer_Product->reindexAll()
#11 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Process.php(212): Mage_Index_Model_Indexer_Abstract->reindexAll()
#12 /home/account/public_html/magento/app/code/core/Mage/Index/Model/Process.php(260): Mage_Index_Model_Process->reindexAll()
#13 /home/account/public_html/magento/shell/indexer.php(167): Mage_Index_Model_Process->reindexEverything()
#14 /home/account/public_html/magento/shell/indexer.php(215): Mage_Shell_Compiler->run()
#15 {main}

Any ideas on how I can fix these errors?

  • 写回答

1条回答 默认 最新

  • dsasd12314 2018-07-26 21:39
    关注

    Sometimes it's possible that you have some category ID in the catalog_category_product table that doesn't belong to catalog_category_entity anymore. So if the following query returns any result, you can identify the missing category id:

    SELECT
        *
    FROM
        catalog_category_product AS a
    LEFT JOIN catalog_category_entity AS b ON a.category_id = b.entity_id
    WHERE
        b.entity_id IS NULL
    GROUP BY
        a.category_id
    

    After that, you can delete the missing category ID from catalog_category_product and catalog_category_product_index_idx table using:

    DELETE
    FROM
        catalog_category_product
    WHERE
        category_id IN (Comma separated category ID)
    

    and

    DELETE
    FROM
        catalog_category_product_index_idx
    WHERE
        category_id IN (Comma separated category ID)
    

    After that, run the indexing again.

    评论

报告相同问题?

悬赏问题

  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。