0

添加可配置产品时(在创建简单产品之前),我在 Magento 中遇到上述错误

这已经奏效,但由于某种原因它现在失败了。

表中甚至不存在键值 4974-134: 在此处输入图像描述

我试过重新创建表格。我已经清除了缓存/日志表/重新索引,但似乎没有任何效果 - 每次 4974 (product/entity_id) 增加 1 时,这意味着它是在 catalog_product_entity 表中创建的,但它不是:

在此处输入图像描述

4

2 回答 2

2

我最终可以解决这个问题的唯一方法是在新模块中扩展/覆盖 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);
    }

}

看起来由于某种原因,在创建可配置产品时,它试图保存可能已经存在于资源适配器中的对象-对此的一些想法将不胜感激。

于 2013-08-08T09:10:14.140 回答
0

它是 product_id 和 attribute_id 的组合。有趣的是 4795 已经存在在那里。

在 Host Gator 为我转移了一个 Magento 站点后,我曾经遇到过这个问题。

找出哪些表被用作这两个恶魔的 FK,并确保下一个增量 ID 不低于此表中的最高值。

就我而言,其中一个表 auto_increment ID 被重置为 0,因此它试图创建一个“1”,但该外键已在有问题的表中使用。

希望这可以帮助。

于 2013-08-07T16:11:02.237 回答