Magento переиндексирует цены на продукты

Я занимаюсь этой проблемой уже пару дней и просто не могу определить проблему или, что более важно, ответ. Я пробовал следующее..

  • Очистка кеша
  • удаление var/locks
  • переиндексация через ssh
  • усечение таблиц _flat
  • инструмент для восстановления базы данных

На данный момент я открыт для всего... любая помощь или ссылка в правильном направлении очень помогут. Спасибо.

Product Prices index process unknown error:
exception 'PDOException' with message 'SQLSTATE[21S01]: Insert value list doe
s not match column list: 1136 Column count doesn't match value count at row 1
' in /home/blazerad/public_html/magento/lib/Zend/Db/Statement/Pdo.php:228

Трассировки стека:

#0 /home/blazerad/public_html/magento/lib/Zend/Db/Statement/Pdo.php(228): PDO
Statement->execute(Array)
#1 /home/blazerad/public_html/magento/lib/Varien/Db/Statement/Pdo/Mysql.php(1
10): Zend_Db_Statement_Pdo->_execute(Array)
#2 /home/blazerad/public_html/magento/lib/Zend/Db/Statement.php(300): Varien_
Db_Statement_Pdo_Mysql->_execute(Array)
#3 /home/blazerad/public_html/magento/lib/Zend/Db/Adapter/Abstract.php(479):
Zend_Db_Statement->execute(Array)
#4 /home/blazerad/public_html/magento/lib/Zend/Db/Adapter/Pdo/Abstract.php(23
8): Zend_Db_Adapter_Abstract->query('INSERT INTO `sm...', Array)
#5 /home/blazerad/public_html/magento/lib/Varien/Db/Adapter/Pdo/Mysql.php(419
): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `sm...', Array)
#6 /home/blazerad/public_html/magento/app/code/core/Mage/Catalog/Model/Resour
ce/Product/Indexer/Price/Default.php(287): Varien_Db_Adapter_Pdo_Mysql->query
('INSERT INTO `sm...')
#7 /home/blazerad/public_html/magento/app/code/core/Mage/Downloadable/Model/R
esource/Indexer/Price.php(47): Mage_Catalog_Model_Resource_Product_Indexer_Pr
ice_Default->_prepareFinalPriceData()
#8 /home/blazerad/public_html/magento/app/code/core/Mage/Catalog/Model/Resour
ce/Product/Indexer/Price.php(385): Mage_Downloadable_Model_Resource_Indexer_P
rice->reindexAll()
#9 /home/blazerad/public_html/magento/app/code/core/Mage/Index/Model/Indexer/
Abstract.php(143): Mage_Catalog_Model_Resource_Product_Indexer_Price->reindex
All()
#10 /home/blazerad/public_html/magento/app/code/core/Mage/Index/Model/Process
.php(209): Mage_Index_Model_Indexer_Abstract->reindexAll()
#11 /home/blazerad/public_html/magento/app/code/core/Mage/Index/Model/Process
.php(255): Mage_Index_Model_Process->reindexAll()
#12 /home/blazerad/public_html/magento/shell/indexer.php(158): Mage_Index_Mod
el_Process->reindexEverything()
#13 /home/blazerad/public_html/magento/shell/indexer.php(198): Mage_Shell_Com
piler->run()
#14 {main}

Next exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[21S01]: I
nsert value list does not match column list: 1136 Column count doesn't match
value count at row 1' in /home/blazerad/public_html/magento/lib/Zend/Db/State
ment/Pdo.php:234

Трассировки стека:

#0 /home/blazerad/public_html/magento/lib/Varien/Db/Statement/Pdo/Mysql.php(1
10): Zend_Db_Statement_Pdo->_execute(Array)
#1 /home/blazerad/public_html/magento/lib/Zend/Db/Statement.php(300): Varien_
Db_Statement_Pdo_Mysql->_execute(Array)
#2 /home/blazerad/public_html/magento/lib/Zend/Db/Adapter/Abstract.php(479):
Zend_Db_Statement->execute(Array)
#3 /home/blazerad/public_html/magento/lib/Zend/Db/Adapter/Pdo/Abstract.php(23
8): Zend_Db_Adapter_Abstract->query('INSERT INTO `sm...', Array)
#4 /home/blazerad/public_html/magento/lib/Varien/Db/Adapter/Pdo/Mysql.php(419
): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `sm...', Array)
#5 /home/blazerad/public_html/magento/app/code/core/Mage/Catalog/Model/Resour
ce/Product/Indexer/Price/Default.php(287): Varien_Db_Adapter_Pdo_Mysql->query
('INSERT INTO `sm...')
#6 /home/blazerad/public_html/magento/app/code/core/Mage/Downloadable/Model/R
esource/Indexer/Price.php(47): Mage_Catalog_Model_Resource_Product_Indexer_Pr
ice_Default->_prepareFinalPriceData()
#7 /home/blazerad/public_html/magento/app/code/core/Mage/Catalog/Model/Resour
ce/Product/Indexer/Price.php(385): Mage_Downloadable_Model_Resource_Indexer_P
rice->reindexAll()
#8 /home/blazerad/public_html/magento/app/code/core/Mage/Index/Model/Indexer/
Abstract.php(143): Mage_Catalog_Model_Resource_Product_Indexer_Price->reindex
All()
#9 /home/blazerad/public_html/magento/app/code/core/Mage/Index/Model/Process.
php(209): Mage_Index_Model_Indexer_Abstract->reindexAll()
#10 /home/blazerad/public_html/magento/app/code/core/Mage/Index/Model/Process
.php(255): Mage_Index_Model_Process->reindexAll()
#11 /home/blazerad/public_html/magento/shell/indexer.php(158): Mage_Index_Mod
el_Process->reindexEverything()
#12 /home/blazerad/public_html/magento/shell/indexer.php(198): Mage_Shell_Com
piler->run()
#13 {main}

person user3760917    schedule 02.07.2014    source источник


Ответы (1)


Вы должны проверить структуру запроса и таблицы

Откройте файл app/code/core/Mage/Catalog/Model/Resource/Product/Indexer/Price/Default.php

И найти строку с

$query = $select->insertFromSelect($this->_getDefaultFinalPriceTable(), array(), false);

Вы можете вывести переменную $query и результат функции $this->_getDefaultFinalPriceTable(), это можно сделать при вызове переиндексации из консоли.

person Aleksandr    schedule 02.07.2014
comment
$query = $select->insertFromSelect($this->_getDefaultFinalPriceTable(), array(), false); $write->query($query); Я вижу эту строку, но я не уверен, что вы предлагаете изменить ее на - person user3760917; 02.07.2014
comment
Добавьте после этой строки следующий код var_dump($query, $this->_getDefaultFinalPriceTable()); dd(); и запустите shell/indexer.php Вы получите sql-запрос и имя таблицы, после чего вы должны их проверить - person Aleksandr; 02.07.2014
comment
Привет, вы должны добавить var_dump($query, $this->_getDefaultFinalPriceTable()); dd(); перед $write->query($query); - person Aleksandr; 03.07.2014
comment
Неустранимая ошибка: имя функции должно быть строкой в ​​/home/blazerad/public_html/magento/app/code/core/Mage/Catalog/Model/Resource/Product/Indexer/Price/Default.php в строке 287. - person user3760917; 03.07.2014
comment
Я получил запрос sql и получил список полей из этого запроса: entity_id, customer_group_id, website_id, tax_class_id, orig_price, price, min_price, max_price, tier_price, base_tier, group_price, base_group_price. Не могли бы вы проверить структуру таблицы для таблицы «catalog_product_index_price_final_idx»? - person Aleksandr; 03.07.2014
comment
Насколько я понимаю, вы используете пользовательский модуль, который изменил структуру таблицы и может изменить поведение индексатора, потому что поле store_id отсутствует по умолчанию - person Aleksandr; 03.07.2014
comment
www.blazerproducts.com/magento/this.jpg я думаю, что нашел, где у меня возникла проблема... теперь, чтобы попытаться исправить это... - person user3760917; 03.07.2014