更改数据库实体(订单、发票、贷项通知单等)的增量ID 在特定存储上

本文讨论如何更改Adobe Commerce数据库(DB)实体(订单、发票、贷项通知单等)的增量ID 在特定Adobe Commerce存储上使用ALTER TABLE SQL语句。

受影响的版本

  • Adobe Commerce内部部署:2.x.x
  • 云基础架构上的Adobe Commerce:2.x.x
  • MySQL:任何支持的版本

您何时需要更改增量ID(案例)

在以下情况下,您可能需要更改新数据库实体的增量ID:

  • 在Live站点上进行硬备份还原之后
  • 某些订单记录已丢失,但支付网关(如PayPal)已使用其ID作为您的当前商家帐户。 在这种情况下,付款网关将停止处理具有相同ID的新订单,并返回“重复发票ID”错误
NOTE
您还可以通过在PayPal的“付款接收首选项”中允许每个发票ID多次付款,修复PayPal的付款网关问题。 请参阅我们的支持知识库中的PayPal网关被拒绝的请求 — 重复发票问题

必备步骤

  1. 查找应更改新增量ID的存储和实体。
  2. 连接到您的MySQL数据库。 对于云基础架构上的Adobe Commerce,您首先需要SSH连接到您的环境
  3. 使用以下查询检查实体序列表的当前auto_increment值:
SHOW TABLE STATUS FROM `{database_name}` WHERE `name` LIKE 'sequence_{entity_type}_{store_id}';

示例

如果您在​ ID=1 ​的存储区中检查订单的自动递增,则表名将是:

'sequence_order_1'

如果auto_increment列的值为​ 1234,则在​ ID=1 ​的商店下个订单将具有​ ID #100001234

相关文档

更新实体以更改增量ID

使用以下查询更新实体:

ALTER TABLE sequence_{entity_type}_{store_id} AUTO_INCREMENT = {new_increment_value};
WARNING
重要信息:新增量值必须大于当前增量值,不得小于!

示例

执行以下查询后:

ALTER TABLE sequence_order_1 AUTO_INCREMENT = 2000;

下一个在​ ID=1 ​商店下单的订单将具有​ ID #100002000

有关生产环境(Cloud)的其他建议步骤

在云基础架构上的Adobe Commerce的生产环境中执行ALTER TABLE查询之前,我们强烈建议执行以下步骤:

  • 测试在暂存环境中更改增量ID的整个过程
  • 创建数据库备份,以便在出现故障时还原您的生产数据库

相关文档

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a