Ошибка при переиндексации плоских данных продукта - PullRequest
0 голосов
/ 14 апреля 2011

Я получаю эту ошибку «Возникла проблема с процессом переиндексации».в Magento, когда я пытаюсь переиндексировать данные в Product Flat Data.Я использую Magento 1.4.1.1, и у меня в базе данных более 50 000 итераций.

Можно ли это исправить?

Вот ошибки, которые я обнаружил в файле exception.log:

2011-04-14T19:24:05+00:00 DEBUG (7): Exception message: SQLSTATE[HY000]: General error: 1005 Can't create table 'magentonou.catalog_product_flat_3' (errno: 150)
Trace: #0 E:\Wamp\www\includes\src\__default.php(48621): Zend_Db_Statement_Pdo->_execute(Array)
#1 E:\Wamp\www\includes\src\__default.php(40291): Zend_Db_Statement->execute(Array)
#2 E:\Wamp\www\includes\src\__default.php(41312): Zend_Db_Adapter_Abstract->query('CREATE TABLE `c...', Array)
#3 E:\Wamp\www\includes\src\__default.php(42062): Zend_Db_Adapter_Pdo_Abstract->query('CREATE TABLE `c...', Array)
#4 E:\Wamp\www\includes\src\Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Flat_Indexer.php(544): Varien_Db_Adapter_Pdo_Mysql->query('CREATE TABLE `c...')
#5 E:\Wamp\www\includes\src\Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Flat_Indexer.php(122): Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Flat_Indexer->prepareFlatTable('3')
#6 E:\Wamp\www\includes\src\Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Flat_Indexer.php(115): Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Flat_Indexer->rebuild('3')
#7 E:\Wamp\www\includes\src\Mage_Catalog_Model_Product_Flat_Indexer.php(64): Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Flat_Indexer->rebuild(NULL)
#8 E:\Wamp\www\includes\src\Mage_Catalog_Model_Product_Indexer_Flat.php(301): Mage_Catalog_Model_Product_Flat_Indexer->rebuild()
#9 E:\Wamp\www\includes\src\Mage_Index_Model_Process.php(139): Mage_Catalog_Model_Product_Indexer_Flat->reindexAll()
#10 E:\Wamp\www\includes\src\Mage_Index_Model_Process.php(167): Mage_Index_Model_Process->reindexAll()
#11 E:\Wamp\www\app\code\core\Mage\Index\controllers\Adminhtml\ProcessController.php(124): Mage_Index_Model_Process->reindexEverything()
#12 E:\Wamp\www\includes\src\__default.php(11748): Mage_Index_Adminhtml_ProcessController->reindexProcessAction()
#13 E:\Wamp\www\includes\src\__default.php(15669): Mage_Core_Controller_Varien_Action->dispatch('reindexProcess')
#14 E:\Wamp\www\includes\src\__default.php(15271): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#15 E:\Wamp\www\includes\src\__default.php(17470): Mage_Core_Controller_Varien_Front->dispatch()
#16 E:\Wamp\www\app\Mage.php(596): Mage_Core_Model_App->run(Array)
#17 E:\Wamp\www\index.php(80): Mage::run('', 'store')
#18 {main}

Ответы [ 2 ]

0 голосов
/ 04 марта 2013

Решение

Посмотрите таблицы catalog_eav_attribute и eav_attribute. Обновите поле used_in_product_listing до 0 для всех пользовательских полей, которые установлены в 1. Перед запуском этого используйте предложение SELECT и посмотрите, какие поля вынимаются. Кроме того, сначала запустите тестовую среду !!

update `catalog_eav_attribute` as cea left join eav_attribute as ea on cea.attribute_id = ea.attribute_id set cea.used_in_product_listing = 0 where cea.used_in_product_listing = 1 and is_user_defined = 1

… и исправлено!

0 голосов
/ 14 апреля 2011

Я помню инструмент для восстановления базы данных, который вы могли скачать с Varien.

Да, проверил.Он все еще существует: Ссылка

Я использовал этот инструмент около года назад с Magento 1.3.x и смог успешно восстановить базу данных с его помощью.

У меня нетзнаю, если он может быть использован для 1.4.x, хотя.К сожалению, они не указывают, для каких версий можно использовать инструмент.Возможно, это указано в исходном коде.

РЕДАКТИРОВАТЬ:

Если MySQL сообщает об ошибке 1005 из оператора CREATE TABLE, и сообщение об ошибке ссылается на ошибку 150, создание таблицы завершилось неудачнопотому что ограничение внешнего ключа было сформировано неправильно.Точно так же, если ALTER TABLE завершается ошибкой и ссылается на ошибку 150, это означает, что определение внешнего ключа будет неправильно сформировано для измененной таблицы.Вы можете использовать SHOW ENGINE INNODB STATUS для отображения подробного объяснения самой последней ошибки внешнего ключа InnoDB на сервере.

Источник: dev.mysql.com

...