很抱歉问题重复,但我找不到问题的答案,所以我再次发布。 我尝试通过管理员重新索引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}
我不知道其他解决方案可能是什么。我尝试删除锁定文件并重新编制索引 也尝试截断平面表,它也没有用。
非常感谢任何帮助。
答案 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)