Magento - 重建索引过程存在问题 - 目录产品

时间:2012-03-29 14:04:25

标签: php mysql magento e-commerce

我刚刚重新编制了运行v1.6的Magenot安装数据,现在我收到一条消息说明

There was a problem with reindexing process.

类别产品,现在不会在任何类别中显示任何产品。我需要尽快解决这个问题,因为它发生在现场网站上。

有没有人知道可能导致这种情况的原因以及解决方法是什么?

我尝试删除var / report和var / locks上的内容但没有快乐。似乎有一些修复,但不是专门针对类别产品

提前致谢

4 个答案:

答案 0 :(得分:6)

这可能是任何

  

重建索引过程出现问题。

当PHP异常从reindexProcessAction操作冒泡到表面时,会发生

错误。你可以在这里看到那些代码。

#File: app/code/core/Mage/Index/controllers/Adminhtml/ProcessController.php
public function reindexProcessAction()
{
    $process = $this->_initProcess();
    if ($process) {
        try {
            Varien_Profiler::start('__INDEX_PROCESS_REINDEX_ALL__');

            $process->reindexEverything();
            Varien_Profiler::stop('__INDEX_PROCESS_REINDEX_ALL__');
            $this->_getSession()->addSuccess(
                Mage::helper('index')->__('%s index was rebuilt.', $process->getIndexer()->getName())
            );
        } catch (Mage_Core_Exception $e) {
            $this->_getSession()->addError($e->getMessage());
        } catch (Exception $e) {
            $this->_getSession()->addException($e,
                 Mage::helper('index')->__('There was a problem with reindexing process.')
            );
        }
    } else {
        $this->_getSession()->addError(
            Mage::helper('index')->__('Cannot initialize the indexer process.')
        );
    }

    $this->_redirect('*/*/list');
}

具体来说,这一行

Mage::helper('index')->__('There was a problem with reindexing process.')

此错误最底层的最快方法是暂时更改上面的行,以便打印出异常消息。 Magento压制默认的异常消息 - 可能是为了防止最终用户看到“丑陋”的PHP错误。将上面的内容更改为

Mage::helper('index')->__('There was a problem with reindexing process. ' . $e->getMessage())

然后再次重新索引。应该指向问题代码的PHP错误消息将包含在您的错误消息中。这应该有助于指出导致索引失败的确切问题。

答案 1 :(得分:2)

嘿伙计你可以截断目录表并再次运行reindex,它将运行一个魅力.. 表名截断catalog_product_flat _ *

“注意:在对数据库进行任何更改之前进行备份” mysqldump [dbname]> [anyname]的.sql

答案 2 :(得分:2)

在这里,我找到了另一个解决方案,并为我工作。 我首先创建 reindex.php ,然后将其放在我的根文件夹中,然后通过以下代码

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 csr_catalogsearch_fulltext;";
$mysqli = Mage::getSingleton('core/resource')->getConnection('core_write');
$mysqli->query($sql);
for ($i = 1; $i <= 9; $i++) {
    $process = Mage::getModel('index/process')->load($i);
   $process->reindexAll();
}
echo Mage::log("Finished Rebuilding Search Index At: " . date("d/m/y h:i:s"));

运行此文件后(www.example.com/reindex.php) 我收到了一条错误消息,如...

General error: 1005 Can't create table catalog_category_flat_store_1' (errno: 150)

然后我在我的数据库中运行以下查询。像

一样
ALTER TABLE catalog_category_entity ENGINE=INNODB;
ALTER TABLE core_store ENGINE=INNODB;

然后清除所有缓存并从amdin面板运行重新索引进程并且它已成功运行。 我建议我不确定它对你的问题是否有帮助。

答案 3 :(得分:0)

这对我有用:

  1. 找到core_url_rewrite,备份表然后截断它。

  2. 清除所有奖金

  3. 重新索引目录索引在索引管理中重写

  4. 现在一切都应该好......