我的“类别产品”索引存在问题。它根本不会重新索引。错误开始的时候我在1.4,现在我已经1.5了,它仍然存在。
我试过了:
无论如何,我可以进一步调查这个问题吗?错误日志没有记下这个问题,我有点在黑暗中。任何帮助都会非常非常感激。
编辑:在收到错误消息后,我得到:报告! SQLSTATE [21S01]:插入值列表与列列表不匹配:1136列数与第1行的值计数不匹配。
编辑2:我运行查询日志并拥有以下信息。如果你不介意看一看是否有一个解决方案,我会非常高兴。它略微凌驾于我的脑海......
[2011-06-14 12:33:26] SQL: SELECT DISTINCT `catalog_product_bundle_selection`.`parent_product_id` FROM `catalog_product_bundle_selection` WHERE (product_id IN('180'))
EXCEPTION
exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1' in /my-domain.com/lib/Zend/Db/Statement/Pdo.php:234
Stack trace:
#0 /my-domain.com/lib/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#1 /my-domain.com/lib/Zend/Db/Adapter/Abstract.php(468): Zend_Db_Statement->execute(Array)
#2 /my-domain.com/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO cat...', Array)
#3 /my-domain.com/lib/Varien/Db/Adapter/Pdo/Mysql.php(335): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO cat...', Array)
#4 /my-domain.com/app/code/core/Mage/Index/Model/Mysql4/Abstract.php(159): Varien_Db_Adapter_Pdo_Mysql->query('INSERT INTO cat...')
#5 /my-domain.com/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Indexer/Product.php(522): Mage_Index_Model_Mysql4_Abstract->insertFromSelect('SELECT? ...', 'catalog_categor...', Array)
#6 /my-domain.com/app/code/core/Mage/Index/Model/Indexer/Abstract.php(125): Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Indexer_Product->reindexAll()
#7 /my-domain.com/app/code/core/Mage/Index/Model/Process.php(139): Mage_Index_Model_Indexer_Abstract->reindexAll()
#8 /my-domain.com/app/code/core/Mage/Index/Model/Process.php(167): Mage_Index_Model_Process->reindexAll()
#9 /my-domain.com/app/code/core/Mage/Index/controllers/Adminhtml/ProcessController.php(124): Mage_Index_Model_Process->reindexEverything()
#10 /my-domain.com/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Index_Adminhtml_ProcessController->reindexProcessAction()
#11 /my-domain.com/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('reindexProcess')
#12 /my-domain.com/app/code/core/Mage/Core/Controller/Varien/Front.php(177): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#13 /my-domain.com/app/code/core/Mage/Core/Model/App.php(304): Mage_Core_Controller_Varien_Front->dispatch()
#14 /my-domain.com/app/Mage.php(596): Mage_Core_Model_App->run(Array)
#15 /my-domain.com/index.php(81): Mage::run('', 'store')
#16 {main}
编辑3:查询本身!
SQL:
INSERT INTO catalog_category_anc_products_index_idx
SELECT STRAIGHT_JOIN DISTINCT ca.category_id, cp.product_id
FROM catalog_category_anc_categs_index_idx AS ca
INNER JOIN catalog_category_entity AS ce
ON ce.path LIKE ca.path OR ce.entity_id = ca.category_id
INNER JOIN catalog_category_product AS cp
ON cp.category_id = ce.entity_id
INNER JOIN catalog_category_product_index_enbl_idx as pv
ON pv.product_id = cp.product_id
答案 0 :(得分:4)
此错误-always-表示在索引进程的某处抛出了异常。
要验证,请检查以下文件中的方法'reindexProcessAction':
应用程序/代码/核心/法师/索引/控制器/ Adminhtml / ProcessController.php
请在第二个catch块中回显并死掉$ e-> getMessage()并报告回来;)
EDIT1:
关于你的例外,根据谷歌,这可能是由于PHP特定于语言环境的floatval格式化...试着把:
setlocale(LC_ALL, 'en_EN');
位于index.php文件的顶部。其他人建议您将System-> Configuration-> General-> Locale设置为'English'。
EDIT2:
这是1.4.x.x中的一个错误,如果你想要一个正确的解决方案 - 为了上帝之爱更新你的安装! :)强>
这是核心文件app / code / core / Mage / Catalog / Model / Resource / Eav / Mysql4 / Category / Indexer / Product.php
的非常讨厌的补丁从1.5开始向后移植。希望它可以帮到某人。
答案 1 :(得分:1)
答案 2 :(得分:0)
检查您是否没有任何产品缺少SKU。您可以从“管理产品”中执行此操作,然后单击SKU列以将空白置于顶部。删除它们或指定SKU,看看重新索引是否有效。
答案 3 :(得分:0)
经过几个小时的努力,我终于找到了解决方案。事实上,这是一个非常简单的解决方案:
truncate
(清空)表catalog_product_flat_1
就是这样。之后,我能够索引所有数据,直到现在,其他一切工作都很完美。这对我有用。我希望它也适合你。