SQLSTATE [23000]:完整性约束违规:1062密钥'IDX_STOCK_PRODUCT'的重复条目'1922-1'

时间:2012-04-06 13:20:24

标签: magento constraints mysql-error-1062 duplicates

在创建产品时,在检索一段时间后的最后一步,Magento会出现以下错误 - :

  

SQLSTATE [23000]:完整性约束违规:1062密钥'IDX_STOCK_PRODUCT'的重复条目'1922-1'

我正在做的是,通过捕获产品ID,我将它放入自定义表中。我已从外部连接到Magento数据库。

令人惊讶的是,数据被插入到Magento的基表和数据库中。也在自定义表中,但为什么它在产品保存后给我这个错误...?

我清除了缓存,浏览器Cookie。 同时删除/ var / cache,/ var / session。 仍然给出错误。 有人可以提出解决方案吗?

7 个答案:

答案 0 :(得分:12)

该消息表示您正在使用属于IDX_STOCK_PRODUCT的相同列组合执行另一个插入,这些列将被定义为UNIQUE。如果是这样,则不允许两次输入相同的组合(看起来它包含两个字段)。

如果要插入记录,请确保选择全新的记录ID,或者记录ID和其他列的组合是唯一的。

如果没有详细的表格结构和代码,我们很难猜到什么是错误的。

答案 1 :(得分:3)

很多时候,当您在自定义模块的观察者中更新产品时会导致此错误,如下所示。

class [NAMESPACE]_[MODULE NAME]_Model_Observer
{
    /**
     * Flag to stop observer executing more than once
     *
     * @var static bool
     */
    static protected $_singletonFlag = false;

    public function saveProductData(Varien_Event_Observer $observer)
    {
        if (!self::$_singletonFlag) {
            self::$_singletonFlag = true;

            $product = $observer->getEvent()->getProduct();
             //do stuff to the $product object
            // $product->save();  // commenting out this line prevents the error
            $product->getResource()->save($product);
    }
} 

因此,在您更新模块观察者的某些属性后保存产品时,请使用$product->getResource()->save($product)代替$product->save()

答案 2 :(得分:1)

您可能忘记自动增加ID字段。

答案 3 :(得分:0)

您的列值已经在数据库表中 这意味着您的表列是唯一的 你应该改变你的价值 然后重试

答案 4 :(得分:0)

我也遇到了这个问题。 将表存储引擎从MyISAM更改为Innodb后,我发现问题已解决。

答案 5 :(得分:-1)

尝试将FK更改为INDEX而不是UNIQUE。

答案 6 :(得分:-4)

我刚刚添加了一个@符号,它开始工作了。像这样:@$product->save();