重新索引平面产品数据时出错

时间:2011-04-14 18:11:01

标签: magento magento-1.4

我收到此错误“重建索引过程出现问题。”在Magento,当我尝试在产品平面数据上重新索引数据时。 我使用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 :(得分:0)

我记得你可以从Varien下载一个数据库修复工具。

是的,检查一下。它仍然存在:Link

我使用该工具大约一年前使用Magento 1.3.x并且能够成功修复数据库。

我不知道,是否可以用于1.4.x。遗憾的是,它们没有说明可以使用该工具的版本。也许它在源代码中说明了。

编辑:

  

如果MySQL报告错误号1005   来自CREATE TABLE语句,以及   错误消息是指错误150,   表创建失败,因为a   外键约束不是   正确形成。同样,如果一个   ALTER TABLE失败,它引用   错误150,表示外键   定义会错误地形成   对于改变的桌子。您可以使用   SHOW ENGINE INNODB STATUS显示一个   最详细的解释   最近InnoDB中的外键错误了   服务器

来源:dev.mysql.com

答案 1 :(得分:0)

解决方案

查看catalog_eav_attribute和eav_attribute表。对于设置为1的所有用户定义字段,将used_in_product_listing字段更新为0.在运行此字段之前,请使用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

...并且已修复!