【发布时间】:2013-03-27 16:08:56
【问题描述】:
我正在寻找任何想法来解释(和防止)以下情况:
1) 我们有一个 Magento 重新索引过程(价格或股票)不时失败:
异常“Zend_Db_Statement_Exception”和消息“SQLSTATE[23000]: 完整性约束违规:1062 重复条目“512723-1-1” /[省略]/lib/Zend/Db/Statement/Pdo.php:242中的键'PRIMARY''
完整跟踪: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 具有相同的键和结构。
还有什么可以作为解释和解决方案的建议?
【问题讨论】:
-
事务是一种能够回滚更改的工具。它们不会阻止其他进程读取或写入表。
标签: mysql magento transactions