From 8c692e6181bcb4a6caa5c243c20fd97a276fd896 Mon Sep 17 00:00:00 2001
From: Michail Slabko <mslabko@ebay.com>
Date: Wed, 21 Oct 2015 11:30:22 +0300
Subject: [PATCH] MAGETWO-44274: SQL error appears if Save & Duplicate product
 with images

---
 .../Catalog/Model/Product/Attribute/Backend/Media.php        | 2 +-
 .../Model/ResourceModel/Product/Attribute/Backend/Media.php  | 5 ++++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Media.php b/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Media.php
index 8ca5ffbc429..f7fd135a134 100644
--- a/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Media.php
+++ b/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Media.php
@@ -85,7 +85,7 @@ class Media extends Product\Attribute\Backend\AbstractMedia
             // For duplicating we need copy original images.
             $duplicate = [];
             foreach ($value['images'] as &$image) {
-                if (empty($image['value_id'])) {
+                if (empty($image['value_id']) || !empty($image['removed'])) {
                     continue;
                 }
                 $duplicate[$image['value_id']] = $this->copyImage($image['file']);
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Product/Attribute/Backend/Media.php b/app/code/Magento/Catalog/Model/ResourceModel/Product/Attribute/Backend/Media.php
index a77ea68ae16..0ac7a8c1a7b 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Product/Attribute/Backend/Media.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Product/Attribute/Backend/Media.php
@@ -324,11 +324,12 @@ class Media extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
         foreach ($this->getConnection()->fetchAll($select) as $row) {
             $data = [
                 'attribute_id' => $attributeId,
-                'entity_id' => $newProductId,
                 'value' => isset($newFiles[$row['value_id']]) ? $newFiles[$row['value_id']] : $row['value'],
             ];
 
             $valueIdMap[$row['value_id']] = $this->insertGallery($data);
+            $this->bindValueToEntity($valueIdMap[$row['value_id']], $newProductId);
+
         }
 
         if (count($valueIdMap) == 0) {
@@ -344,6 +345,8 @@ class Media extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
         );
 
         foreach ($this->getConnection()->fetchAll($select) as $row) {
+            unset($row['record_id']);
+            $row['entity_id'] = $newProductId;
             $row['value_id'] = $valueIdMap[$row['value_id']];
             $this->insertGalleryValueInStore($row);
         }
-- 
GitLab