17

製品の作成中に、しばらく取得した後の最後のステップで、Magentoは次のエラーを出します-:

SQLSTATE [23000]:整合性制約違反:1062キー'IDX_STOCK_PRODUCT'の重複エントリ'1922-1'

私がやっていることは、製品IDをキャプチャすることによって、そのエントリをカスタムテーブルに配置することです。Magentoデータベースに外部接続しました。

驚いたことに、データはMagentoのベーステーブルとカスタムテーブルの両方に挿入されていますが、製品の保存後にエラーが発生するのはなぜですか...?

キャッシュ、ブラウザのCookieをクリアしました。/ var / cache、/ var/sessionも削除します。まだエラーが発生します。誰かが解決策を提案できますか?

4

7 に答える 7

16

このメッセージは、IDX_STOCK_PRODUCT の一部である列の同じ組み合わせで別の挿入を行っていることを意味します。この結合は UNIQUE として定義されます。そうであれば、同じ組み合わせ (2 つのフィールドで構成されているようです) を 2 回入力することはできません。

レコードを挿入する場合は、新しいレコード ID を選択するか、レコード ID と他の列の組み合わせが一意であることを確認してください。

詳細なテーブル構造とコードがなければ、何が問題なのかほとんど推測できません。

于 2012-04-06T13:39:48.257 に答える
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()

于 2014-05-09T13:16:11.633 に答える
1

id フィールドの自動インクリメントを忘れている可能性があります。

于 2012-12-29T16:01:33.797 に答える
-1

FK を UNIQUE ではなく INDEX に変更してみてください。

于 2014-05-19T14:35:35.440 に答える
-5

@記号を追加したところ、機能し始めました。このような:@$product->save();

于 2016-06-01T14:22:54.530 に答える