it-swarm.com.de

SQLSTATE [23000]: Verletzung der Integritätsbedingung: 1062 Doppelter Eintrag '1922-1' für Schlüssel 'IDX_STOCK_PRODUCT'

Beim Erstellen eines Produkts gibt Magento im letzten Schritt nach dem Abrufen für eine bestimmte Zeit die folgenden Fehler aus:

SQLSTATE [23000]: Verletzung der Integritätsbedingung: 1062 Doppelter Eintrag '1922-1' für Schlüssel 'IDX_STOCK_PRODUCT'

Was ich tue, ist, durch das Erfassen der Produkt-ID den Eintrag in eine benutzerdefinierte Tabelle zu setzen. Ich habe mich extern mit der Magento-Datenbank verbunden.

Überraschenderweise werden Daten sowohl in Magentos Basistabelle als auch in Custom-Tabelle eingefügt, aber warum werden mir diese Fehler nach dem Speichern des Produkts angezeigt?

Ich habe Cache gelöscht, Browser-Cookies Entfernen Sie auch/var/cache, /var/session.still Fehler .

12
Prat

die Nachricht bedeutet, dass Sie eine weitere Einfügung mit derselben Kombination von Spalten ausführen, die Teil von IDX_STOCK_PRODUCT sind, wobei die als UNIQUE zu definierenden Nähte erscheinen. Wenn dies der Fall ist, darf die gleiche Kombination nicht zweimal eingegeben werden (sie scheint aus zwei Feldern zu bestehen). 

Wenn Sie Datensätze einfügen, müssen Sie sicherstellen, dass Sie eine neue Datensatz-ID auswählen oder dass die Kombination aus Datensatz-ID und der anderen Spalte eindeutig ist. 

Ohne detaillierte Tabellenstruktur und Ihren Code können wir kaum erraten, was schief läuft.

12
Radek

Dieser Fehler tritt häufig auf, wenn Sie ein Produkt im Observer Ihres benutzerdefinierten Moduls aktualisieren (siehe unten).

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

Wann immer Sie Ihr Produkt speichern, nachdem Sie einige Eigenschaften im Observer Ihres Moduls aktualisiert haben, verwenden Sie $product->getResource()->save($product) anstelle von $product->save().

3
Tahir Yasin

Möglicherweise haben Sie vergessen, das ID-Feld automatisch zu erhöhen.

1
Rhys

Ich bin auch auf dieses Problem gestoßen. Nachdem ich die Table Storage Engine von MyISAM auf Innodb geändert hatte, wurde das Problem behoben.

0
Mario7

ihr Spaltenwert befindet sich bereits in der Datenbanktabelle Dies bedeutet, dass Ihre Tabellenspalte Unique.__ ist. Sie sollten Ihren Wert ändern und es erneut versuchen 

0
Adeel Ahmed