Shopware 同步 API 失败 "Duplicate entry..."

Shopware sync API fails with "Duplicate entry..."

我们有一个 运行 Shopware 6.4.7,我们的 ERP 系统正在将产品导入其中。

其中一个 API 请求如下所示:

URL: https://www.example.com/api/_action/sync

additional header:
    single-operation -> 1
    indexing-behavior -> use-queue-indexing

{
    "write-product-CONF-242732": {
        "entity": "product",
        "action": "upsert",
        "payload": [...]
}

载荷包含

"configuratorSettings": [
    {
        "optionId": "cbdaf832e70950ee5b9135fa6535e9a8"
    },
    {
        "optionId": "fa6549ff184c43be95d5db190d63ad8f"
    },
    {
        "optionId": "61f4ff3cdc394b489ff4ba90627bf43a"
    }
],

并且请求失败并出现可怕的错误消息(由于多重编码)

{"errors":[{"code":"0","status":"500","title":"Internal Server Error","detail":"An exception occurred while executing \u0027INSERT INTO product_configurator_setting (id, version_id, product_id, product_version_id, property_group_option_id, created_at) VALUES (\u0027|F\ufffd\ufffdb\u0022I\u02bd\ufffdS\u0002\ufffd(\ufffd;\u0027,\u0027\u000f\ufffd\u001c\ufffd\ufffdjK\u00beK\ufffd\ufffdu,4%\u0027,\u0027\u0228Z2\u003C_C\u0583\ufffd\ufffd\ufffd\u0001\ufffdQ\ufffd\u0027,\u0027\u000f\ufffd\u001c\ufffd\ufffdjK\u00beK\ufffd\ufffdu,4%\u0027,\u0027\ufffd\ufffd2\ufffd\tP\ufffd[\ufffd5\ufffde5\ufffd\u0027,\u00272022-04-13 11:01:23.653\u0027);\u0027:\n\nSQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry \u0027\xC8\xA8Z2\u003C_C\xD6\x83\xE4\xF4\xC8\x01\x94Q\xDF-\x0F\xA9\x1C\xE3\u0027 for key \u0027uniq.product_configurator_setting.prod_id.vers_id.prop_group_id\u0027"}]}

让我为您翻译一下: 在键 uniq.product_configurator_setting.prod_id.vers_id.prop_group_id

上重复输入

所以从我的角度来看,Shopware 应该认识到,product_configurator_setting 中的条目已经存在并且更新它或者最好跳过它,因为不需要更新。

所以重要的问题是:

我有点纳闷,心想,这个有点破。我还没有深入挖掘,为什么会这样,因为希望有人已经这样做了:-)

所描述的识别实体并更新它的行为在这种情况下只会找到给定的产品并使用给定的有效负载更新它,在您的情况下是新的配置选项。我猜这是有意为之的行为。

您可以:

  • 跟踪您 ERP 中的选项,只添加新选项
  • 请求现有配置并在您的 ERP 中创建差异
  • 删除请求之前该产品的所有条目。我想您可以通过添加删除操作来使用相同的请求来做到这一点。

目前在我的phone,手头没有更深入的例子。希望这已经有所帮助。