Wie entferne ich eine doppelte SKU über die Datenbank?

12

Ich erhalte diese Fehlermeldung, wenn ich versuche, einige meiner Magento-Produkte über den Administrator zu bearbeiten und zu speichern: " Der Wert des Attributs" SKU "muss eindeutig sein ."

Wenn ich meine Produkte in Magento Admin ansehe, ist ein doppeltes SKU nirgends zu finden, aber wenn ich einen Produktexport durchführe, gibt es tatsächlich einige Produkte mit demselben SKU. Theoretisch hätte Magento dies niemals zulassen dürfen, aber leider habe ich es mit einer ziemlich großen und ausgereiften (3+ Jahre alten) Produktgruppe zu tun, die die Überreste früherer Magento-Bugs und Macken zu tragen scheint.

Ich vermute, die einzige Möglichkeit, dieses Problem zu beheben, besteht darin, einen der doppelten Skus manuell aus der Datenbank zu entfernen. Ich bin mir jedoch nicht sicher, wie dies am besten / sichersten funktioniert. Ich habe so ziemlich keine Erfahrung in der Arbeit mit Datenbanken, daher ist jede Hilfe willkommen.

Amanda
quelle

Antworten:

7
  1. Sichern Sie Ihre catalog_product_entityDatenbanktabelle ( siehe: /programming//a/6683000/4457531 )

  2. Überprüfen Sie catalog_product_entitymit dieser Abfrage, ob doppelte Skus in der Tabelle vorhanden sind :

    SELECT COUNT(*), sku
    FROM `catalog_product_entity`
    GROUP BY sku HAVING COUNT(*) > 1
  3. Doppelte Einträge entfernen

    • Entfernen Sie neue doppelte Produkte und bewahren Sie ältere Artikel auf mit:

      DELETE catalog_product_entity FROM catalog_product_entity
      LEFT OUTER JOIN (
          SELECT MIN(entity_id) as id, sku
          FROM catalog_product_entity
          GROUP BY sku
      ) as t1
      ON catalog_product_entity.entity_id = t1.id
      WHERE t1.id IS NULL
    • Um alte doppelte Produkte zu entfernen und neue SKUs beizubehalten , ersetzen Sie diese MINdurchMAX in der Join-Unterabfrage

      LEFT OUTER JOIN (
          SELECT MAX(entity_id) as id, sku
          ...
      )
Nolwennig
quelle
3

Sie haben wahrscheinlich keine doppelten SKUs in Ihrer Datenbank. Sie werden nur in Magento 1.9.2.x angezeigt, wenn Sie einen Export ausführen.

Versuche dies:

https://github.com/baconl/Magento-1.9.2.1-duplicate-sku-fix

Es ist eine vorübergehende Korrektur, bis das Magento-Kernteam sie repariert.

Baconl
quelle
1

Sie müssen diesen unerwarteten Skus untersuchen und reinigen. Suchen Sie zuerst den betreffenden Skus, dann müssen Sie ihn in der Datenbank mit der folgenden Abfrage bereinigen:

DELETE FROM `catalog_product_entity` WHERE `sku` IN ('SKU1', 'SKU2', ..., 'SKU1654');

Beachten Sie, dass ich Ihnen empfehle, dies zu tun, wenn Sie sicher sind, was Sie tun. Dies ist nicht umkehrbar.

Nicolas D
quelle
Denken Sie daran, Ihre Datenbank zu sichern, bevor Sie eine sinnvolle Abfrage direkt anwenden
Datenbank anwenden
1

Bitte führen Sie das folgende Skript über die Datenbank aus

DELETE FROM `catalog_product_entity` WHERE `entity_id` IN (SELECT *  FROM (SELECT `entity_id` FROM `catalog_product_entity` GROUP BY `sku` HAVING (COUNT(*) > 1)) AS A);
Abdul
quelle
Denken Sie daran, Ihre
Datenbank