【问题标题】:Magento 1.6.2 cant not reindex product flat dataMagento 1.6.2 不能重新索引产品平面数据
【发布时间】:2023-03-07 07:52:01
【问题描述】:

我们的 magento 1.6.2 不能重新索引产品平面数据。它有时还会显示“重新索引过程存在问题”。

我根据其他用户的经验尝试了许多解决方案。没有结果。我们进口了散装产品,但我们不确定这是重新索引问题的原因。

什么是理想的解决方案?

这是我在 shell 中使用的命令:

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}

【问题讨论】:

    标签: php mysql magento


    【解决方案1】:

    在 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
    

    被发现已损坏。

    通常这意味着某些记录在 catalog_product_entity.entity_id 字段中包含 null,而它们应该包含现有的 entity_ids。

    在尝试解决此问题之前,请先备份您的数据库

    现在,要查找损坏的记录,请使用以下命令查询您的数据库:

    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_ids为catalog_product_flat_4表中的entity_ids,已损坏,需要删除。

    删除catalog_product_flat_4中的相应记录,然后再次尝试重新索引。

    【讨论】:

    • 谢谢,我收到 shell/inderer.php 的以下错误警告:输入中的意外字符:' in /usr/local/lsws/fcgi-bin/lsphp-5.3.10 on line 654 解析错误:语法错误,第 654 行的 /usr/local/lsws/fcgi-bin/lsphp-5.3.10 中的意外 T_STRING [~]# 警告:输入中的意外字符:' 在 /usr/local/lsws/fcgi -bin/lsphp-5.3.10 在第 654 行 >
    • 请忽略 indexer.php 的拼写错误
    • 这个lsphp-5.3.10 不是一个标准的 Magento 文件。请在文件lsphp-5.3.10 的第 654 行附近发布代码,最好在您的问题中发布(在评论中不可读)。
    • 谢谢,我很有希望,我会努力的。只是想知道包含主要产品信息的表格。重新索引后,catalog_product_flat 表从哪个表中取回它们的信息?
    • 他们从为产品实体定义的多个EAV表中取回数据,主要是catalog_product_entity_*
    【解决方案2】:
    create one file like reindex.php in your magento root directory with following code
    
    <?php
    
        enter code here
    
    // when you get status "Processing" instead of "Ready" in your index management run this script and it's working fine
    // change the index order as per your requirement currently it's 7 for Catalog Search Index  you can set as per your requirement
    
    require_once 'app/Mage.php';
    umask( 0 );
    Mage :: app( "default" );
    Mage::log("Started Rebuilding Search Index At: " . date("d/m/y h:i:s"));
    $sql = "truncate catalogsearch_fulltext;";
    $mysqli = Mage::getSingleton('core/resource')->getConnection('core_write');
    $mysqli->query($sql);
    $process = Mage::getModel('index/process')->load(7);
    $process->reindexAll();
    Mage::log("Finished Rebuilding Search Index At: " . date("d/m/y h:i:s"));
    
    now save it and run it using browser and it will solved your problem
    
    I hope you will get your solution. I will help you if you still getting problem.
    

    【讨论】:

      【解决方案3】:

      magento 以编程方式重新索引 身份证号码

      1 个目录产品属性

      2 catalog_product_price

      3 目录网址

      4 catalog_product_flat

      5 catalog_category_flat

      6 catalog_category_product

      7 catalogsearch_stock

      8 cataloginventory_stock

      9 tag_summary

      for ($i = 1; $i

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

      $process->reindexAll();

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多