我正在寻找解释(和预防)以下内容的任何想法:
1)我们有一个不时失败的Magento reindex流程(价格或库存):
异常'Zend_Db_Statement_Exception',消息'SQLSTATE [23000]: 完整性约束违规:1062重复条目“512723-1-1” 关键'PRIMARY''/ [省略] /lib/Zend/Db/Statement/Pdo.php: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是否具有相同的键和结构。
还有什么可以作为解释和解决方案的建议?
答案 0 :(得分: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;