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

7

17

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?

Hamal answered 6/4, 2012 at 13:20 Comment(3)
This error means you're using the same primary key value twice in the same table. There is already a product with the ID of 1922-1 in IDX_STOCK_PRODUCT, and a query is trying to save a new record with that ID again.Such
Whats the solution then?Hamal
Don't save data with a duplicate ID, basically. Without any code samples relevant to this error, that's the best solution you're going to get.Such
V
16

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.

Villainous answered 6/4, 2012 at 13:39 Comment(1)
You are right Radek, I am fetching SKU & entity_id in my custom table. In my custom table I have just 4 columns-: No.,entity_id,SKU & timestamp....What constraint I should put in that table?Hamal
M
3

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()

Markswoman answered 9/5, 2014 at 13:16 Comment(0)
L
1

You might have forgotten to auto increment the id field.

Landel answered 29/12, 2012 at 16:1 Comment(1)
The key is a compound key in this instance, so auto incrementing has nothing to do with it.Beguile
B
1

I also encountered this problem. I found after changing the table storage engine from MyISAM to Innodb, problem solved .

Banna answered 19/8, 2019 at 2:43 Comment(1)
I have encountered the same problem and by using your suggestion my problem get fixed.Lamellibranch
C
0

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

Cameraman answered 17/9, 2018 at 7:45 Comment(1)
Please edit your question for clarity and content 1) Break down your answer to sentences 2) IDX_STOCK_PRODUCT is probably a compound key, not a column. 3) Once you update your answer add some additional useful information to it so it's not just a duplicate or subset of other answers.Enumeration
P
-1

Try to change the FK to INDEX instead of UNIQUE.

Polyhydric answered 19/5, 2014 at 14:35 Comment(0)
S
-5

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

Scopp answered 1/6, 2016 at 14:22 Comment(2)
The usage of @ is a bad practice that must be avoided at all costs!Rachmaninoff
As Victor says @ should be avoided as it suppresses error messages. Details can be found about PHP Error Control hereBeguile

© 2022 - 2024 — McMap. All rights reserved.