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

| 当我尝试在Product Flat Data上为数据重新索引时,我在Magento中收到此错误“重新索引过程存在问题。”。 我使用Magento 1.4.1.1,并且数据库中有超过5万个项目。 有办法解决这个问题吗? 这是我在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}
    
已邀请:
我记得您可以从Varien下载数据库修复工具。 是的,检查了一下。仍然存在:链接 大约一年前,我在Magento 1.3.x上使用了该工具,并且能够成功修复该数据库。 不过,我不知道它是否可以用于1.4.x。不幸的是,它们没有说明该工具可以用于哪个版本。也许在源代码中有说明。 编辑:   如果MySQL报告错误号1005   从CREATE TABLE语句中   错误消息涉及错误150,   表创建失败,因为   外键约束不是   正确地形成。同样,如果   ALTER TABLE失败,它指的是   错误150,表示外键   定义的格式不正确   用于更改后的表格。您可以使用   显示引擎的INNODB状态以显示   最详细的解释   最近的InnoDB外键错误   服务器。 资料来源:dev.mysql.com     
解 看一下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
…固定!     

要回复问题请先登录注册