1

以下を説明(および防止)するためのアイデアを探しています。

1) Magento の再インデックス プロセス (価格または在庫) が、次のような場合に時々失敗します。

例外 'Zend_Db_Statement_Exception' とメッセージ 'SQLSTATE[23000]: 整合性制約違反: 1062 Duplicate entry '512723-1-1' for key 'PRIMARY'' in /[省略]/lib/Zend/Db/Statement/Pdo.php: 242

完全なトレース: https://gist.github.com/werdan/5255362

2) Magento の再インデックスはトランザクションで行われ、次のようにスケッチできます。

START TRANSACTION;
DELETE FROM `cataloginventory_stock_status`;
INSERT INTO cataloginventory_stock_status SELECT * FROM cataloginventory_stock_status_idx;
COMMIT;

3) DELETE コマンドと INSERT コマンドの間でテーブルの一貫性を壊すことは不可能であるべきですが、それが起こったとしてもです。

テーブルcataloginventory_stock_statusとcataloginventory_stock_status_idxのキーと構造が同一であることを確認しました。

説明と解決策として他に何が提案できますか?

4

1 に答える 1

0

これは、多くの SQL ダンプ ツールが行うことです。

LOCK TABLES foo WRITE;
ALTER TABLE foo DISABLE KEYS;

INSERT INTO foo (foo_id, foo_name) VALUES (1, 'One'), 
    (2, 'Two'), 
    (3, 'Three');

ALTER TABLE foo ENABLE KEYS;
UNLOCK TABLES;
于 2013-03-27T16:20:30.403 に答える