【问题标题】:Why would Magento fail to save a customer after generating an ID?为什么 Magento 在生成 ID 后无法保存客户?
【发布时间】:2011-08-31 18:14:03
【问题描述】:

我正在尝试追查一个罕见错误(喜欢那些间歇性错误)的原因,客户在结账时选择注册,但是当订单完成时,Magento 不知何故无法保存客户记录。这导致了一个没有电子邮件地址的孤儿订单,这是一个困难的客户服务情况。

以下是我目前的调查结果:

  • adminhtml 中的销售订单视图报告客户是访客并且电子邮件地址为空白。帐单和送货地址是可见的。
  • customer_is_guestsales_flat_order 中为假
  • sales_flat_order 条目链接到sales_flat_order_address 中的有效记录。
  • sales_flat_order_address 记录包含 customer_idcustomer_address_id 的值,但是这些链接的记录不存在。
  • 客户信息、订购的产品、付款方式中没有明显的模式。
  • system.log、exception.log、apache 错误日志、var/reports 或我知道的任何其他日志中没有相关条目。

想法:

  • 客户保存进度已足够生成 ID。
  • customer_save_after 上有一个观察者导致保存回滚?
  • 低级数据库错误导致保存失败。

有人对如何追踪此问题有任何建议吗?

版本是 Enterprise 1.9。

【问题讨论】:

  • @Anton - 使用何种付款方式似乎并不重要。有些是 Paypal,有些是 Cyber​​source。
  • 您使用哪个 magento 版本?正如我所看到的,客户和订单保存被包含在一笔交易中。而且我在删除客户的核心模块中没有看到任何关于 customer_save_after 事件的观察者(我发现这个事件只有 2 个观察者,他们都在时事通讯模块中)。
  • @Zyava - 这是在 Enterprise v1.9 上 - 我同意,我也没有看到任何相关的 customer_save_after 观察者。我还以为客户保存中的异常也会回滚订单保存...
  • 除了这个论坛,我肯定会联系 Magento 的工作人员。他们对没有错误的企业版有既得利益。他们至少可以为您指明正确的方向。对不起,我没有比这更多的东西了。
  • 插入是否分配了任何应该在数据库上自动递增的数字字段?也许一些并发问题?使用 InnoDB?

标签: php mysql magento


【解决方案1】:

我会添加大量额外的日志记录,尝试将其记录到足以捕获错误 - 并在可以检测到错误时保存这些日志。

一旦您拥有显示错误的日志,您就可以更轻松地隔离有问题的代码。

为此,您可能需要记录数据库查询,不幸的是,如果数据量很大和/或存在隐私问题,这可能会很棘手。

【讨论】:

    猜你喜欢
    • 2019-10-20
    • 2019-07-12
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多