【问题标题】:After Upgrade to Magento 2.2.2: Duplicate entry '0-0-0-0' for key 'PRIMARY', query was: INSERT INTO `salesrule_product_attribute` () VALUES ()升级到 Magento 2.2.2 后:键 'PRIMARY' 的重复条目 '0-0-0-0',查询是:INSERT INTO `salesrule_product_attribute` () VALUES ()
【发布时间】:2018-01-18 11:31:02
【问题描述】:

如果我将 Magento 从 2.1.8 升级到 2.2.2 并运行 setup:upgrade 我会收到以下错误:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0-0-0-0' for key 'PRIMARY', query was: INSERT INTO `salesrule_product_attribute` () VALUES ()

如果我截断所有 salesrule 表,它可以工作,但我不能在生产环境中执行此操作。这个问题有解决办法吗?

【问题讨论】:

    标签: magento magento2 magento2.2


    【解决方案1】:

    问题出在文件vendor/magento/module-sales-rule/Model/ResourceModel/Rule.php中。

    如果$data 为空,则setActualProductAttributes 方法将插入空的VALUES()

    这可以通过覆盖模型和替换来解决

    $connection->insertMultiple($this->getTable('salesrule_product_attribute'), $data);
    

    与:

    if(count($data > 0 )) {
        $connection->insertMultiple($this->getTable('salesrule_product_attribute'), $data);
    }
    

    【讨论】:

    • 无法应用数据补丁...参数必须是数组或实现可计数的对象...只是删除该行而不是如果 - 似乎有效
    猜你喜欢
    • 2013-09-03
    • 2017-08-07
    • 2018-02-20
    • 2014-09-04
    • 2023-03-07
    • 1970-01-01
    • 2018-07-11
    • 2012-08-24
    相关资源
    最近更新 更多