无法初始化索引器进程

时间:2013-07-14 17:27:38

标签: magento indexing magento-1.7

很抱歉问题重复,但我找不到问题的答案,所以我再次发布。 我尝试通过管理员重新索引magento 1.7.0.2。由于服务器是共享服务器,我无法通过shell脚本运行索引器;虽然我尝试通过cron运行它,但它也没有用。 运行索引器进程后,我在exception.log文件中记录了以下错误:

2013-07-14T17:03:55+00:00 DEBUG (7): Exception message: Cannot create table without columns comments

跟踪:#0 /home/username/public_html/demo/app/code/core/Mage/Catalog/Model/Resource/Category/Flat.php(604):Varien_Db_Adapter_Pdo_Mysql-> createTable(Object(Varien_Db_Ddl_Table))

#1 /home/username/public_html/demo/app/code/core/Mage/Catalog/Model/Resource/Category/Flat.php(1418): Mage_Catalog_Model_Resource_Category_Flat->_createTable('4')
#2 /home/username/public_html/demo/app/code/core/Mage/Catalog/Model/Resource/Category/Flat.php(1431): Mage_Catalog_Model_Resource_Category_Flat->_createTables()
#3 /home/username/public_html/demo/app/code/core/Mage/Catalog/Model/Category/Indexer/Flat.php(246): Mage_Catalog_Model_Resource_Category_Flat->reindexAll()
#4 /home/username/public_html/demo/app/code/core/Mage/Index/Model/Process.php(209): Mage_Catalog_Model_Category_Indexer_Flat->reindexAll()
#5 /home/username/public_html/demo/app/code/core/Mage/Index/Model/Process.php(255): Mage_Index_Model_Process->reindexAll()
#6 /home/username/public_html/demo/app/code/core/Mage/Index/controllers/Adminhtml/ProcessController.php(178): Mage_Index_Model_Process->reindexEverything()
#7 /home/username/public_html/demo/app/code/core/Mage/Core/Controller/Varien/Action.php(419): Mage_Index_Adminhtml_ProcessController->massReindexAction()
#8 /home/username/public_html/demo/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('massReindex')
#9 /home/username/public_html/demo/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#10 /home/username/public_html/demo/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#11 /home/username/public_html/demo/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#12 /home/username/public_html/demo/index.php(87): Mage::run('', 'store')
#13 {main}

我不知道其他解决方案可能是什么。我尝试删除锁定文件并重新编制索引 也尝试截断平面表,它也没有用。

非常感谢任何帮助。

7 个答案:

答案 0 :(得分:3)

尝试使用脚本文件运行索引。

在根目录中创建一个文件reindexing.php。

<?php
 require_once 'app/Mage.php';
 $app = Mage::app('admin');
 umask(0);
 for ($index = 1; $index <= 8; $index++) {
     $process = Mage::getModel('index/process')->load($index);
     $process->reindexAll();
 }
 ?>

然后清除magento all cache并将此文件作为http://domain.com/reindexing.php

运行

答案 1 :(得分:2)

我尝试了所有可以通过互联网找到的东西来解决这个问题,但没有任何帮助。所以,我决定自己解决这个问题。 我调试并跟踪错误一直到数据库,我了解到重构索引的问题,“异常消息:无法创建没有列注释的表”意味着eav_attribute中列frontend_label的某些值为null或0。 因此,首先我需要运行以下查询并添加前端标签(如果它们为null或零),并在值为null或零的属性的前端标签中添加值。

Voila,问题已得到解决:

以下是我为解决此问题而运行的查询:

列出空值:

  

SELECT e。*   从
      eav_attribute e   LEFT JOIN eav_entity_type et      ON e.entity_type_id = et.entity_type_id   哪里      et.entity_type_code ='catalog_category'AND      e.frontend_label为NULL

然后我修复了空值:

  

SELECT e。*   从
      eav_attribute e   LEFT JOIN eav_entity_type et      ON e.entity_type_id = et.entity_type_id   哪里      et.entity_type_code ='catalog_category'AND      e.frontend_label = '0'

之后,我可以从管理员或控制台运行索引流程,并且运行完美。

希望大家会发现这个解决方案很有帮助。

答案 2 :(得分:1)

**SOLUTION:**

Enabled magento DB logging via:
lib/Varien/Db/Adapter/Pdo/Mysql.php 
Down around line 86,

you’ll see the following class variables:
protected $_debug = false;
protected $_logAllQueries = false;
protected $_logCallStack = false;
protected $_debugFile = ‘var/debug/sql.txt’;

Change all to true and then ran the reindex. 
Then checked the log file specified above. 

答案 3 :(得分:1)

我遇到了这个问题,原来需要修理一张桌子。

从shell运行以下命令:

php {directory_root}/shell/indexer.php --reindex

我遇到如下错误:

&#39;一般错误:145表&#39; ./ {datbasename} / mg_catalogsearch_fulltext&#39;被标记为崩溃,应该修复&#39;

我在提到的表上运行了一个mysql REPAIR,然后可以毫无问题地运行索引器。

答案 4 :(得分:1)

我尝试了这个教程solve Magento cannot initialize the indexer process error。这个错误可能有一些原因

  • 内存限制值和最长执行时间值

  • 没有写入权限/ var

  • 产品过多导致过载。

  • 数据库中表的损坏 您可以尝试以下解决方案

增加内存限制和最长执行时间

打开php.ini文件并添加这两行

memory_limit = 2048M

max_execution_time = 300

允许/ var文件夹

的写入权限

您可以为/ var文件夹设置755或777,看看错误是否消失。

通过命令行运行重建索引 打开ssh客户端并运行以下命令

php shell/indexer.php --reindex

使用phpmyadmin修复数据库

打开phpmyadmin并执行所有数据库修复

答案 5 :(得分:1)

要解决&#34;无法初始化索引器进程&#34;您需要按照以下步骤运行

  

解决方案1: -

     

这通常发生在我们启用&#34;使用平面目录类别&#34;   和&#34;使用平面目录产品&#34;

     

请通过以下命令通过Putty运行SSH: -

     

这些是用于重新编制索引的个别命令: -

     

php shell / indexer.php --reindex catalog_category_flat

     

php shell / indexer.php --reindex catalog_category_product

     

php shell / indexer.php --reindex catalogsearch_fulltext

     

或运行所有重新编制索引: -

     

php shell / indexer.php --reindexall

     

然后清除magento all cache。

解决方案2: -

  

尝试使用PHP脚本文件运行索引。   在根目录中创建一个文件reindex_custom.php。

<?php
require_once("app/Mage.php");
Mage::app('default');
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
try{
$indexerByShell = Mage::getBaseDir().'/shell/indexer.php';
if(file_exists($indexerByShell))  
 { 
$indexListByCode = array(
"catalog_product_attribute",
                       "catalog_product_price",
                       "catalog_product_flat",
                       "catalog_category_flat",
                       "catalog_category_product",
                       "catalog_url",
                       "catalogsearch_fulltext",
                       "cataloginventory_stock"
    );
        //reindex using magento command line  
        foreach($indexListByCode as $indexer)  
        {  
            echo "reindex $indexer \n ";  
            exec("php $indexerByShell --reindex $indexer");  
        } 
    }
}catch(Exception $e){
    echo $e;
}
?>

然后清除magento所有缓存并将此文件作为http://example.com/reindex_custom.php

运行

答案 6 :(得分:0)

由于此原因可能会出现两种情况

1。使用此文档来刷新您的数据只需抛出此LINK

或者第二个是

2。禁用我的所有第三方扩展程序,但标记为Mage _ *的扩展程序除外。

希望它一定能帮到你。