Magento 1.6.2 - > 1.7升级导致价格指数腐败

时间:2012-05-07 01:30:24

标签: mysql magento

我已经将magento从1.6.2更新到1.7,一切顺利,显然网站工作得很好。但是,我不能reidex产品价格,看起来其中一个表缺少列。我已经尝试了shell工具,这就是我得到的:

Product Prices index process unknown error:
exception 'PDOException' with message 'SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1' in /home/thelittl/public_html/asia/lib/Zend/Db/Statement/Pdo.php:228
Stack trace:
#0 /home/thelittl/public_html/asia/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 /home/thelittl/public_html/asia/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#2 /home/thelittl/public_html/asia/lib/Zend/Db/Statement.php(300): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#3 /home/thelittl/public_html/asia/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#4 /home/thelittl/public_html/asia/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `ca...', Array)
#5 /home/thelittl/public_html/asia/lib/Varien/Db/Adapter/Pdo/Mysql.php(419): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `ca...', Array)
#6 /home/thelittl/public_html/asia/app/code/community/Brim/Groupedoptions/Model/Resource/Eav/Mysql4/Product/Indexer/Price/Grouped.php(76): Varien_Db_Adapter_Pdo_Mysql->query('INSERT INTO `ca...')
#7 /home/thelittl/public_html/asia/app/code/core/Mage/Catalog/Model/Resource/Product/Indexer/Price/Grouped.php(48): Brim_Groupedoptions_Model_Resource_Eav_Mysql4_Product_Indexer_Price_Grouped->_prepareGroupedProductPriceData()
#8 /home/thelittl/public_html/asia/app/code/core/Mage/Catalog/Model/Resource/Product/Indexer/Price.php(385): Mage_Catalog_Model_Resource_Product_Indexer_Price_Grouped->reindexAll()
#9 /home/thelittl/public_html/asia/app/code/core/Mage/Index/Model/Indexer/Abstract.php(143): Mage_Catalog_Model_Resource_Product_Indexer_Price->reindexAll()
#10 /home/thelittl/public_html/asia/app/code/core/Mage/Index/Model/Process.php(209): Mage_Index_Model_Indexer_Abstract->reindexAll()
#11 /home/thelittl/public_html/asia/app/code/core/Mage/Index/Model/Process.php(255): Mage_Index_Model_Process->reindexAll()
#12 /home/thelittl/public_html/asia/shell/indexer.php(158): Mage_Index_Model_Process->reindexEverything()
#13 /home/thelittl/public_html/asia/shell/indexer.php(198): Mage_Shell_Compiler->run()
#14 {main}

Next 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 /home/thelittl/public_html/asia/lib/Zend/Db/Statement/Pdo.php:234
Stack trace:
#0 /home/thelittl/public_html/asia/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#1 /home/thelittl/public_html/asia/lib/Zend/Db/Statement.php(300): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#2 /home/thelittl/public_html/asia/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#3 /home/thelittl/public_html/asia/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `ca...', Array)
#4 /home/thelittl/public_html/asia/lib/Varien/Db/Adapter/Pdo/Mysql.php(419): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `ca...', Array)
#5 /home/thelittl/public_html/asia/app/code/community/Brim/Groupedoptions/Model/Resource/Eav/Mysql4/Product/Indexer/Price/Grouped.php(76): Varien_Db_Adapter_Pdo_Mysql->query('INSERT INTO `ca...')
#6 /home/thelittl/public_html/asia/app/code/core/Mage/Catalog/Model/Resource/Product/Indexer/Price/Grouped.php(48): Brim_Groupedoptions_Model_Resource_Eav_Mysql4_Product_Indexer_Price_Grouped->_prepareGroupedProductPriceData()
#7 /home/thelittl/public_html/asia/app/code/core/Mage/Catalog/Model/Resource/Product/Indexer/Price.php(385): Mage_Catalog_Model_Resource_Product_Indexer_Price_Grouped->reindexAll()
#8 /home/thelittl/public_html/asia/app/code/core/Mage/Index/Model/Indexer/Abstract.php(143): Mage_Catalog_Model_Resource_Product_Indexer_Price->reindexAll()
#9 /home/thelittl/public_html/asia/app/code/core/Mage/Index/Model/Process.php(209): Mage_Index_Model_Indexer_Abstract->reindexAll()
#10 /home/thelittl/public_html/asia/app/code/core/Mage/Index/Model/Process.php(255): Mage_Index_Model_Process->reindexAll()
#11 /home/thelittl/public_html/asia/shell/indexer.php(158): Mage_Index_Model_Process->reindexEverything()
#12 /home/thelittl/public_html/asia/shell/indexer.php(198): Mage_Shell_Compiler->run()
#13 {main}

不知道这是如何影响网站的,如果它以某种方式影响它。

2 个答案:

答案 0 :(得分:4)

这可能不是缺少列问题。 Insert value list does not match column list最常发生在有人将数据库抽象层传递给字符串时它需要和数组,或者数组需要字符串时。

看起来有人(也许是你)在

中添加了一些自定义代码
Brim_Groupedoptions

模块。我的猜测是对索引过程中使用的资源模型之一进行类重写。检查查询中        应用程序/代码/小区/布赖姆/ Groupedoptions /型号/资源/ EAV / Mysql4 /产品/索引/价格/ Grouped.php

76

传入正确的列数和/或正确使用资源模型方法。

答案 1 :(得分:3)

感谢您的回答,我调试了查询并发现问题,也许它可以帮助别人。我改变了:

应用/代码/小区/布赖姆/ Groupedoptions /型号/资源/ EAV / Mysql4 /产品/索引/价格/ Grouped.php

在第55行附近,为那个没有考虑的列添加另一个参数:

'group_price'  => new Zend_Db_Expr('NULL')

并完成了!