高负载下的Magento投掷错误:UNQ_SALES_FLAT_INVOICE_INCREMENT_ID

时间:2015-05-26 20:06:30

标签: mysql magento

我试图找出为什么在高负载(不在正常负载下)我们的magento存储器会随机抛出以下错误:

付款交易失败。 原因 SQLSTATE [23000]:完整性约束违规:1062重复条目 关于'UNQ_SALES_FLAT_INVOICE_INCREMENT_ID'的'INV1392428'

这会导致卡片被处理但订单无法通过。我的猜测是事务在数据库上发生冲突,(我们正在运行InnoDB),但是我无法弄清楚如何设置它以便正确“锁定”密钥以防止重复创建。

非常感谢任何帮助!

谢谢, 瑞克

1 个答案:

答案 0 :(得分:0)

增量是在PHP(Mage_Eav_Model_Entity_Type :: Mage_Eav_Model_Entity_Type())中完成的,而不是数据库,因此有一个定义的时间段可以获得两个相同的增量ID。通常情况下,这段时间非常非常小,但有两种情况可能会增加它。

  1. 极低的数据库负载正在减慢运行速度
  2. 在保存过程中较早启动事务的自定义(或可能是Magento本身)。事务可以锁定表并增加生成重复增量ID的机会窗口。将此与#1联系起来,发生此错误的窗口将会增加。