1

我正在寻找任何想法来解释(和防止)以下内容:

1)我们有一个 Magento 重新索引过程(价格或股票),但不时失败:

异常“Zend_Db_Statement_Exception”和消息“SQLSTATE [23000]:完整性约束违规:1062 /[省略]/lib/Zend/Db/Statement/Pdo.php 中键“PRIMARY”的重复条目“512723-1-1”: 242

完整跟踪:https ://gist.github.com/werdan/5255362

2) Magento reindex 是在事务中完成的,大致如下:

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 回答