Magento目录搜索索引,无法初始化索引器进程

zyfwsgd6  于 2022-11-12  发布在  其他
关注(0)|答案(3)|浏览(4491)

我需要一些帮助,Magento 1.7.0.1在我们尝试重新索引目录搜索索引时抛出错误“无法初始化索引器进程。”所有其他索引都工作正常。

2013-11-28T21:32:38+00:00 DEBUG (7): Exception message: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'e.category_ids' in 'field list'
Trace: #0 /path_to_root/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)

# 1 /path_to_root/lib/Zend/Db/Statement.php(300): Varien_Db_Statement_Pdo_Mysql->_execute(Array)

# 2 /path_to_root/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)

# 3 /path_to_root/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT STRAIGHT...', Array)

# 4 /path_to_root/lib/Varien/Db/Adapter/Pdo/Mysql.php(419): Zend_Db_Adapter_Pdo_Abstract->query('SELECT STRAIGHT...', Array)

# 5 /path_to_root/lib/Zend/Db/Adapter/Abstract.php(734): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array)

# 6 /path_to_root/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php(265): Zend_Db_Adapter_Abstract->fetchAll(Object(Varien_Db_Select))

# 7 /path_to_root/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php(157): Mage_CatalogSearch_Model_Resource_Fulltext->_getSearchableProducts(1, Array, NULL, 0)

# 8 /path_to_root/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php(116): Mage_CatalogSearch_Model_Resource_Fulltext->_rebuildStoreIndex(1, NULL)

# 9 /path_to_root/app/code/core/Mage/CatalogSearch/Model/Fulltext.php(84): Mage_CatalogSearch_Model_Resource_Fulltext->rebuildIndex(NULL, NULL)

# 10 /path_to_root/app/code/core/Mage/CatalogSearch/Model/Indexer/Fulltext.php(446): Mage_CatalogSearch_Model_Fulltext->rebuildIndex()

# 11 /path_to_root/app/code/core/Mage/Index/Model/Process.php(209): Mage_CatalogSearch_Model_Indexer_Fulltext->reindexAll()

# 12 /path_to_root/app/code/core/Mage/Index/Model/Process.php(255): Mage_Index_Model_Process->reindexAll()

# 13 /path_to_root/app/code/core/Mage/Index/controllers/Adminhtml/ProcessController.php(178): Mage_Index_Model_Process->reindexEverything()

# 14 /path_to_root/app/code/core/Mage/Core/Controller/Varien/Action.php(419): Mage_Index_Adminhtml_ProcessController->massReindexAction()

# 15 /path_to_root/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('massReindex')

# 16 /path_to_root/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))

# 17 /path_to_root/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()

# 18 /path_to_root/app/Mage.php(683): Mage_Core_Model_App->run(Array)

# 19 /path_to_root/index.php(87): Mage::run('', 'store')

# 20 {main}

我们已经尝试了数据库修复工具,并禁用所有扩展,但我们没有得到任何回应。
我很确定它正在某个表中查找e.category_id,但不知道是哪个。
任何帮助都将是热的!

klsxnrf1

klsxnrf11#

PHP/Magento已经给了你自己调试这个代码所需要的所有信息。


# 7 /path_to_root/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php(157):

Mage_CatalogSearch_Model_Resource_Fulltext->_getSearchableProducts(1, Array, NULL, 0)

看起来由_getSearchableProducts构建的查询是您的罪魁祸首。

SELECT STRAIGHT_JOIN `e`.`entity_id`, `e`.`type_id`, `e`.`sku`, `stock_status`.`stock_status` AS `in_stock` 
FROM `catalog_product_entity` AS `e`
INNER JOIN `catalog_product_website` AS `website` 
    ON website.product_id=e.entity_id AND website.website_id='1'
INNER JOIN `cataloginventory_stock_status` AS `stock_status` 
    ON stock_status.product_id=e.entity_id AND stock_status.website_id='1' 
WHERE (e.entity_id>0) ORDER BY `e`.`entity_id` ASC LIMIT 100

也就是说,这里没有提到category_ids字段,这意味着在您的特定系统(核心黑客、监听器、重写等)中的某个地方有自定义代码向该查询添加了额外的WHEREON子句。
您可以通过临时将以下调试添加到您的系统中,在自己的系统中对此进行调试


# File: app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php

protected function _getSearchableProducts($storeId, array $staticFields, $productIds = null, $lastProductId = 0,
    $limit = 100)
{
    //...
    echo (string) $select;
    exit;
    $result = $writeAdapter->fetchAll($select);        
}

这将输出您的系统生成的SQL查询,您可以从那里回溯。

xu3bshqb

xu3bshqb2#

如果将任何属性设置为“static”作为eav_attribute中的backend_type(category_ids是其中之一),并且同一属性ID(category_ids为108)在catalog_eav_attribute中将“is_searchable”设置为true,则会出现此错误。
唯一可以是“static”和“is_searchable”的属性必须存在于catalog_product_entity表中(例如sku)。
我无法告诉您“is_searchable”是如何在attribute_id为108的catalog_eav_attribute中设置为'1'的,但将其设置为'0'应该可以修复此错误。

owfi6suc

owfi6suc3#

这可能是一个有点hacky,但我已经修复了这个简单地通过添加一个空白列到表catalog_product_entity作为一个整数标题category_ids我很肯定这是最初造成的'高级自定义产品选项插件'的安装,虽然我不确定任何更多的细节。
感谢艾伦,这对到达那里帮助很大!:D

相关问题