添加可配置产品时(在创建简单产品之前),我在 Magento 中遇到上述错误
这已经奏效,但由于某种原因它现在失败了。
表中甚至不存在键值 4974-134:
我试过重新创建表格。我已经清除了缓存/日志表/重新索引,但似乎没有任何效果 - 每次 4974 (product/entity_id) 增加 1 时,这意味着它是在 catalog_product_entity 表中创建的,但它不是:
添加可配置产品时(在创建简单产品之前),我在 Magento 中遇到上述错误
这已经奏效,但由于某种原因它现在失败了。
表中甚至不存在键值 4974-134:
我试过重新创建表格。我已经清除了缓存/日志表/重新索引,但似乎没有任何效果 - 每次 4974 (product/entity_id) 增加 1 时,这意味着它是在 catalog_product_entity 表中创建的,但它不是:
我最终可以解决这个问题的唯一方法是在新模块中扩展/覆盖 Product 模型 _afterSave 函数(确保新类扩展 extends 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);
}
}
看起来由于某种原因,在创建可配置产品时,它试图保存可能已经存在于资源适配器中的对象-对此的一些想法将不胜感激。
它是 product_id 和 attribute_id 的组合。有趣的是 4795 已经存在在那里。
在 Host Gator 为我转移了一个 Magento 站点后,我曾经遇到过这个问题。
找出哪些表被用作这两个恶魔的 FK,并确保下一个增量 ID 不低于此表中的最高值。
就我而言,其中一个表 auto_increment ID 被重置为 0,因此它试图创建一个“1”,但该外键已在有问题的表中使用。
希望这可以帮助。