我在添加可配置产品时(在创建简单产品之前)在Magento中遇到上述错误
这已经奏效,但出于某种原因,它现在失败了。
表中甚至不存在键值4974-134:
我尝试重新创建表格。我已经清除缓存/日志表/重新编制索引,似乎没有任何工作 - 每次4974(product / entity_id)增加1意味着它在catalog_product_entity表中创建,但它不是:
答案 0 :(得分:2)
我最终解决这个问题的唯一方法是在新模块中扩展/覆盖Product model _afterSave函数(确保新类扩展为Mage_Catalog_Model_Product
)。
像这样:
/**
* Saving product type related data and init index
*
* @return Mage_Catalog_Model_Product
*/
protected function _afterSave()
{
$this->getLinkInstance()->saveProductRelations($this);
if($this->getTypeId() !== 'configurable')
{
$this->getTypeInstance(true)->save($this);
}
/**
* Product Options
*/
$this->getOptionInstance()->setProduct($this)
->saveOptions();
$result = parent::_afterSave();
Mage::getSingleton('index/indexer')->processEntityAction(
$this, self::ENTITY, Mage_Index_Model_Event::TYPE_SAVE
);
return $result;
}
关键位是:
if($this->getTypeId() !== 'configurable')
{
$this->getTypeInstance(true)->save($this);
}
}
看起来由于某种原因,在创建可配置产品时,它试图保存可能存在于资源适配器中的对象 - 对此的一些想法将不胜感激。
答案 1 :(得分:0)
它是product_id和attribute_id的组合。有趣的是4795已存在。
在Host Gator为我转移Magento网站后,我遇到过这个问题。
找出哪些表被用作这两个恶魔的FK,并确保下一个增量ID不低于此表中的最高值。
在我的情况下,其中一个表auto_increment ID被重置为0,因此它试图创建一个“1”,但该外键已经在违规表中使用。
希望这有帮助。