【问题标题】:Magento - There was a issue with reindexing process - Catalog Products [closed]Magento - 重新索引过程存在问题 - 目录产品 [关闭]
【发布时间】:2012-03-29 14:04:25
【问题描述】:

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

There was a problem with reindexing process.

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

有没有人知道可能是什么原因造成的以及解决方法是什么?

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

提前致谢

【问题讨论】:

  • 你有 shell 访问权限吗?然后尝试从 shell (php shell/indexer.php reindexall) 启动索引进程。

标签: php mysql magento e-commerce


【解决方案1】:

这可能是任何东西

重建索引过程出现问题。

当 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 错误消息应该指向问题代码,将包含在您的错误消息中。这应该有助于指出导致索引失败的确切问题。

【讨论】:

  • 它现在显示和错误无法初始化索引器进程。我尝试添加 . $e->getMessage()) 到 Mage::helper('index')->__('Cannot initialize the indexer process.') 行的末尾,但它没有显示任何内容。您对可能出现的问题有任何想法吗?
  • 好吧,如果你得到一个不同的错误,上面的代码将永远不会运行。如果 _initProcess 中的代码无法运行,则会引发“无法初始化索引器进程”,这仅在进程页面未传递您的请求 ID 参数时才会发生。这应该给你足够的继续。祝你好运!
  • 好的,我知道 _initProcess 无法运行,这就是我收到错误消息的原因,但我不确定从那里去哪里解决问题。有没有办法在运行重新索引时输出错误?我非常感谢您的帮助,因为我在这里有点超出我的深度!
  • 添加(临时)调试代码以确定失败原因的方法。 var_dump($processId);退出;查看 ID 是否正确传递等。尝试找出此方法返回 false 的原因,它可能/应该指出您的系统出了什么问题。
  • 我的问题与 DROP 数据库权限有关。在我授予数据库用户 DROP 权限后,问题就解决了。
【解决方案2】:

嘿伙计,您可以截断目录表并再次运行重新索引,它会以魅力运行.. 要截断catalog_product_flat_*的表名

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

【讨论】:

    【解决方案3】:

    在这里,我找到了另一个解决方案及其对我的工作。 我首先创建 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) 我收到一条错误消息,例如 ..

    一般错误:1005 无法创建表 catalog_category_flat_store_1'(错误号:150)

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

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

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

    【讨论】:

    • 很棒非常有帮助..
    【解决方案4】:

    这对我有用:

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

    2. 清除所有现金

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

    现在应该一切都好...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多