Magento的订单ID增量跳跃(magento order id increment jumps)

2019-09-17 21:09发布

出于某种原因,订单的ID(上sales_flat_order表increment_id)没有在我的Magento 1.6.1随后递增。 这是它的外观了一些放在实际的订单后:

increment_id   created_at            updated_at
100000001      2011-12-14 12:35:24   2011-12-14 12:35:25
100000002      2011-12-14 13:02:39   2011-12-14 13:02:39
100000003      2011-12-14 13:04:18   2011-12-14 13:04:18
100000004      2012-02-01 16:54:58   2012-02-01 16:54:58
100000005      2012-03-14 12:22:35   2012-03-14 12:22:35
100000006      2012-03-20 13:10:48   2012-03-20 13:10:48
100000011      2012-03-29 20:58:48   2012-03-29 20:58:48
100000012      2012-03-29 21:06:43   2012-03-29 21:06:43
100000013      2012-03-30 10:48:20   2012-03-30 10:48:21
100000014      2012-03-30 13:05:40   2012-03-30 13:05:41
100000015      2012-04-03 15:51:01   2012-04-03 15:51:02
100000016      2012-04-19 15:00:49   2012-04-19 15:00:50
100000017      2012-05-09 12:09:21   2012-05-09 12:09:22
100000019      2012-05-24 05:35:35   2012-05-24 05:35:36
100000020      2012-05-24 05:41:11   2012-05-24 05:41:12
100000008      2012-05-24 05:48:52   2012-05-24 05:48:53

我的问题是,为什么是Magento的跳跃增量有时? 而更糟糕的是,在与增量100000008我的例子为了100000020.后进入是否有人知道为什么发生这种情况,如果有一种方法来解决这个问题?

Answer 1:

这是正常的,可以理解尽管令人不安。

当进入Magento的结帐过程是“储备”的报价(车)对象上的increment_id并把它。 你可以看到,在获得增量ID代码:

Mage_Eav_Model_Entity_Type::fetchNewIncrementId()

每个商店最后使用的ID存储在eav_entity_store。 如果客户放弃完成结帐过程之前他们的车(即引用对象),保留increment_id永远不会出现的顺序。 你可以看到,有时在订单号这样的效果,因为他们进来在繁忙的商店 - 偶尔一个真正的老订单ID在当天的订单来自通过从被检查出一个老车客户。

这种现象的存在是为了让Magento的送支付网关最终订单ID(increment_id),在完成订单之前允许的门户订单ID与订单相关联。 如果客户放弃支付过程中的网关,订单ID已经死了(或者更准确地说仍然附着在引号)。

你可以看到这种情况发生在贝宝快递模块:

Mage_Paypal_Model_Express_Checkout::start()

这就要求

Mage_Sales_Model_Quote::reserveOrderId()

如果你想找到你的“失踪” increment_ids,采取实地reserved_order_id下sales_flat_quote看看。 您应该看到它们连接到未转化的报价对象(车)。

这种行为可以创造一些支付网关的问题; Moneris想到。 当您发送Moneris'主办付款网页相同的顺序编号的两倍,它扼流圈和为客户创造一个神秘的错误状态。 当客户访问托管的薪酬页,背出,并重新访问该页面会出现这种情况。 因此,在某些情况下,有必要重新生成报价对象编程相关的订单ID。



Answer 2:

我面临着同样的问题,但它仅在服务器与一个巨大的负荷量命中。 出现此问题的原因分贝进入锁定状态,而转换成报价顺序。 在进一步检查,我发现的问题是,它试图插入到sales_flat_order表后权交易中写入到sales_flat_order_grid表。 随着并发查询就引起锁定冲突。 真正的解决办法是将sales_flat_order_grid的东西出来交易。

链接帮助我理解的问题

这个补丁解决了这个问题对我来说。

你必须从Mage_Sales_Model_Abstract删除功能_afterSave并添加

public function afterCommitCallback(){
    if (!$this->getForceUpdateGridRecords()) {
         $this->_getResource()->updateGridRecords($this->getId());
     }
    parent::afterCommitCallback();
}

让我知道这是否解决了问题你。



文章来源: magento order id increment jumps
标签: magento