完整性约束违规:1062重复条目“UNQ_CATALOG_PRODUCT_SUPER_ATTRIBUTE_PRODUCT_ID_ATTRIBUTE_ID”的重复条目“4974-134”

时间:2013-08-07 15:19:18

标签: php mysql magento magento-1.7

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

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

表中甚至不存在键值4974-134:  enter image description here

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

enter image description here

2 个答案:

答案 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”,但该外键已经在违规表中使用。

希望这有帮助。