3

抱歉问题重复,但我找不到问题的答案,所以我再次发布。我尝试通过管理员重新索引 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}

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

任何帮助是极大的赞赏。

4

7 回答 7

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所有缓存并以http://domain.com/reindexing.php运行这个文件

于 2013-07-15T03:58:24.153 回答
2

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

瞧,问题已解决:

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

列出空值:

SELECT e.* FROM
eav_attribute e LEFT JOIN eav_entity_type et ON e.entity_type_id = et.entity_type_id WHERE et.entity_type_code = 'catalog_category' AND e.frontend_label 为 NULL

然后我修复了空值:

SELECT e.* FROM
eav_attribute e LEFT JOIN eav_entity_type et ON e.entity_type_id = et.entity_type_id WHERE et.entity_type_code = 'catalog_category' AND e.frontend_label='0'

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

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

于 2013-07-28T15:18:30.087 回答
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. 
于 2014-06-24T05:29:14.593 回答
1

我遇到了这个问题,结果发现需要修理一张桌子。

从 shell 运行以下命令:

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

我有如下错误:

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

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

于 2014-10-20T05:26:02.513 回答
1

我尝试了本教程来解决 Magento 无法初始化索引器进程错误。此错误可能有一些原因

  • 内存限制和最大执行时间的低值

  • 无写入权限 /var

  • 产品过多导致过载。

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

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

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

memory_limit = 2048M

max_execution_time = 300

允许 /var 文件夹的写入权限

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

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

php shell/indexer.php --reindex

使用 phpmyadmin 修复数据库

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

于 2016-08-30T12:43:35.097 回答
1

要解决“无法初始化索引器进程”,您需要运行以下步骤

解决方案1:-

这通常发生在我们启用“使用平面目录类别”和“使用平面目录产品”时

请通过 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所有缓存。

解决方案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运行这个文件

于 2017-03-22T09:25:29.703 回答
0

由于这个原因,可能会出现两种情况

1.使用这个文档来刷新你的数据只是去扔这个链接

或者第二个是

2.禁用我所有的第 3 方扩展,除了标记为 Mage_* 的扩展。

希望它一定会帮助你。

于 2013-07-15T03:20:30.823 回答