【问题标题】:Magento 2 - Reindexing generates SQLSTATE[23000]: Integrity constraint violationMagento 2 - 重新索引生成 SQLSTATE [23000]:完整性约束违规
【发布时间】:2016-09-08 07:41:07
【问题描述】:
  • 我通过 CSV 导入功能导入了产品。
  • 导入没有任何问题。
  • 所有进口产品都列在管理面板中。
  • 问题仅出在索引catalog_product_attribute。其余索引重新索引正常。

当我尝试重新索引索引(在控制台中)以使它们在前端存储中可见时,我得到 SQLSTATE[23000]:完整性约束违规错误:

SQLSTATE[23000]:违反完整性约束:1062 键“PRIMARY”的重复条目“8942-138-1-265”,查询为:INSERT INTO mag_catalog_product_index_eav_idx (entity_id,attribute_id, store_id,value) 值 (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), ( ?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), ( ?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), ( ?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), ( ?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), ( ?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), ( ?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), ( ?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), ( ?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), ( ?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), ( ?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), (?, ?, ?, ?), ( ?, ?, ?, ?).....

请指教我该怎么办?谢谢!

【问题讨论】:

  • 您是否至少导入 2 家商店? id=138 的属性是多选?
  • 我也有同样的问题。只有一家商店,在我的情况下,该属性确实是多选。 @Pete-jaworski:你解决过这个问题吗?
  • 您找到解决此问题的方法了吗?

标签: magento indexing magento2


【解决方案1】:

我发现了我的问题。我的属性是multiselect 类型。这意味着 Magento 会将字符串拆分为单独的 ID,并在索引表中为每个选项创建唯一键。

但是...如果您的数据库中有重复值(由于导入失败或其他原因),则会引发此错误。

在我的情况下,我的数据库中的value227,15,227,其值为227 2 次,引发上述错误。将值更改为 227,15 为我解决了这个问题。

【讨论】:

    【解决方案2】:

    问题描述:问题仅与 multiselect 可过滤属性有关。假设我们从multiselect 选项中为 pert 保存单个值。 SKU 然后在catalog_product_entity_varchar 表中以逗号分隔存储值(因为根据multselect 行为 Magento 以逗号分隔存储数据)。

    解决方案: 创建 cron 文件,通过该文件从 catalog_product_entity_varchar 表中获取该属性的所有值,然后使用 PHP 使用 (,) 逗号展开,然后创建唯一数组并再次使用 primary_key 更新相同的值。

    为我工作。

    【讨论】:

      【解决方案3】:

      Magento软件升级后,我们需要通过shell使用标准方法重新索引数据:

      php bin/magento indexer:reindex
      

      如果重新索引任务产生以下错误,您需要通过此script 修复产品实体表中的数据。

      【讨论】:

        猜你喜欢
        • 2016-05-23
        • 1970-01-01
        • 2022-11-02
        • 2015-03-31
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 2020-01-31
        • 2020-01-28
        相关资源
        最近更新 更多