SQLSTATE[23000]: Integrity constraint violation: 1

2019-01-17 22:37发布

While creating product, at the last step after retrieving for a time, Magento gives following error-:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1922-1' for key 'IDX_STOCK_PRODUCT'

What I am doing is, by capturing product id, I am putting it's entry in custom table. I have connected to Magento database externally.

Surprisingly data is inserted in both Magento's base table & also in Custom table but why it is giving me that error after product saving...?

I cleared cache, browser cookies. Also remove /var/cache, /var/session. still giving error. Can anybody suggest a solution?

6条回答
一纸荒年 Trace。
2楼-- · 2019-01-17 22:51

You might have forgotten to auto increment the id field.

查看更多
唯我独甜
3楼-- · 2019-01-17 22:54

Many time this error is caused when you update a product in your custom module's observer as shown below.

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);
    }
} 

Hence whenever you save your product after updating some properties in your module's observer use $product->getResource()->save($product) instead of $product->save()

查看更多
霸刀☆藐视天下
4楼-- · 2019-01-17 22:56

the message means you are doing another insert with the same combination of columns that are part of the IDX_STOCK_PRODUCT, which seams to be defined as UNIQUE. If it is so, it doesn't allow to enter same combination (it seems like it consists of two fields) twice.

If you are inserting records, make sure you are picking brand new record id or that the combination of record id and the other column is unique.

Without detailed table structure and your code, we can hardly guess whats going wrong.

查看更多
再贱就再见
5楼-- · 2019-01-17 22:57

I just added an @ symbol and it started working. Like this: @$product->save();

查看更多
老娘就宠你
6楼-- · 2019-01-17 23:08

Try to change the FK to INDEX instead of UNIQUE.

查看更多
干净又极端
7楼-- · 2019-01-17 23:09

your column value is already in database table it means your table column is Unique you should change your value and try again

查看更多
登录 后发表回答