Magento: «Невозможно переиндексировать». - PullRequest
1 голос
/ 14 июня 2011

Проблемы с индексом "Продукты категории". Это просто не переиндексирует. Я был на 1.4, когда возникла ошибка, сейчас я на 1.5, и она все еще там.

Я пробовал:

  1. Восстановление базы данных с помощью инструмента восстановления базы данных magento
  2. Очистка var, всего кеша, блокировок, сессий
  3. Убедиться, что все права указаны правильно.
  4. Вырывая мои волосы.

Могу ли я продолжить расследование этой проблемы? Журналы ошибок не обращают внимания на эту проблему, и я немного в неведении. Любая помощь будет очень и очень признательна.

Редактировать: После вывода сообщения об ошибке я получаю: Сообщить! 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

Ответы [ 4 ]

4 голосов
/ 14 июня 2011

Эта ошибка-всегда- указывает, что где-то в процессе индексации было сгенерировано исключение.

Чтобы проверить, проверьте метод 'reindexProcessAction' в следующем файле:

app / code / core/Mage/Index/controllers/Adminhtml/ProcessController.php

Пожалуйста, напечатайте $ e-> getMessage () во втором блоке перехвата и отправьте отчет;)

edit1:

Что касается вашего исключения, то, по словам Google, это может быть связано с форматированием floatval для конкретного языка PHP ... попробуйте поставить:

setlocale(LC_ALL, 'en_EN'); 

в верхней части вашего index.phpфайл.Другие предполагают, что вы установите для System-> Configuration-> General-> Locale значение «English».

edit2:

Это ошибка в 1.4.xx, если вы хотитеПравильное исправление - ради бога, обновите вашу установку!:)

Вот очень неприятный патч для основного файла приложения / кода / ядра / Маг / Каталог / Модель / Ресурс / Eav / Mysql4 / Категория / Indexer / Product.php

http://pastebin.com/fWYTsYuX

Он поддерживается с 1.5.Надеюсь, это кому-нибудь поможет.

1 голос
/ 20 июля 2011

Magento, иногда может быть очень странным. Попробуйте отключить DEVELOPER_MODE (в .htaccess или index.php) и переиндексировать. Это помогло мне.

0 голосов
/ 24 марта 2012

После нескольких часов борьбы я наконец нашел решение.На самом деле, это очень простое решение:

  • Сделайте резервную копию вашей базы данных
  • Откройте phpMyAdmin и truncate (пустую) таблицу catalog_product_flat_1

Вот и все.После этого я смог проиндексировать все данные, и до сих пор все остальное работает отлично.Это сработало для меня.Я надеюсь, что это работает и для вас.

0 голосов
/ 14 июня 2011

Убедитесь, что у вас нет товаров без SKU.Вы можете сделать это из «Управление продуктами», а затем щелкнув по столбцу SKU, чтобы вывести пустые места наверх.Удалите их или назначьте SKU и посмотрите, работает ли переиндексер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...