Pim-community-dev: 2.1.8 : Doppelter Eintrag für den Schlüssel „searchunique_idx“ beim Importieren von Produkten über die CLI

Erstellt am 6. Apr. 2018  ·  3Kommentare  ·  Quelle: akeneo/pim-community-dev

Wenn ich einen Feed mit nur einer SKU und Bildspalten in Akeneo über die Befehlszeile importiere, schlägt der Import mit dem folgenden Befehl fehl:

[2018-04-06 15:35:24] batch.ERROR: Encountered an error executing the step: 
An exception occurred while executing 'INSERT INTO pim_catalog_completeness 
(ratio, missing_count, required_count, locale_id, channel_id, product_id) VALUES (?, ?, ?, ?, ?, ?)'
with params [100, 0, 1, 39, 1, 4404]:  
SQLSTATE[23000]: Integrity constraint violation: 
1062 Duplicate entry '1-39-4404' for key 'searchunique_idx' [] []

Weiß jemand, was dieses Problem verursachen könnte? Oder wie kann ich das beheben? Das Seltsame ist, dass der Schlüssel darauf hindeutet, dass es in meiner Datenbank in dieser Tabelle auch ein Produkt mit der ID 4404 geben würde, aber das ist nicht der Fall.

Update: Bei der weiteren Untersuchung habe ich festgestellt, dass die vom Client hochgeladene Datei mehrere Vorkommen derselben SKU hatte. Könnte dies die Ursache für dieses Problem sein? Werden diese Dinge in einer einzigen Transaktion erledigt? (was erklären könnte, warum ich die kollidierende ID nicht in der Datenbank finden konnte).

Hilfreichster Kommentar

Ich habe dieses Problem in 2 Szenarien erlebt.

Doppelte Importdaten
Ihr Vorschlag ist richtig: Wenn Sie mehrere Instanzen derselben SKU in Ihrer Importdatei haben, erhalten Sie diesen Fehler.

Elastic Search-Indizes enthalten entfernte Produktdaten
Der andere Fall, in dem ich dieses Problem hatte, war, als Elasticsearch eine Aufzeichnung eines gelöschten Produkts in seinen Indizes gespeichert hat und irgendwie das Vollständigkeitsskript „füttert“, das nach dem Importieren von Produktmodellen ausgeführt wird.
Dies lag entweder daran, dass das Produktmodell entfernt wurde, nachdem Akeneo nicht alle ES-Daten der zugrunde liegenden Produktvarianten entfernt hatte, oder daran, dass ich manuell einen Datensatz aus der Datenbank entfernt hatte.
Ich bin mir nicht ganz sicher, wer von beiden es verursacht hat, aber es könnte der zweite Fall sein und dann bin ich irgendwie selbst schuld.

Das Debuggen war jedoch sehr schwierig, da ich weder in meiner Datenbank doppelte Datensätze dieses Produkts finden noch Dateien importieren konnte.

Die Lösung:
Werfen Sie über die Befehlszeile alle ES-Indizes weg:
bin/console akeneo:elasticsearch:reset-indexes
Dann neu aufbauen:
bin/console pim:product:index --all
bin/console pim:product-model:index --all

Alle 3 Kommentare

Ich habe dieses Problem in 2 Szenarien erlebt.

Doppelte Importdaten
Ihr Vorschlag ist richtig: Wenn Sie mehrere Instanzen derselben SKU in Ihrer Importdatei haben, erhalten Sie diesen Fehler.

Elastic Search-Indizes enthalten entfernte Produktdaten
Der andere Fall, in dem ich dieses Problem hatte, war, als Elasticsearch eine Aufzeichnung eines gelöschten Produkts in seinen Indizes gespeichert hat und irgendwie das Vollständigkeitsskript „füttert“, das nach dem Importieren von Produktmodellen ausgeführt wird.
Dies lag entweder daran, dass das Produktmodell entfernt wurde, nachdem Akeneo nicht alle ES-Daten der zugrunde liegenden Produktvarianten entfernt hatte, oder daran, dass ich manuell einen Datensatz aus der Datenbank entfernt hatte.
Ich bin mir nicht ganz sicher, wer von beiden es verursacht hat, aber es könnte der zweite Fall sein und dann bin ich irgendwie selbst schuld.

Das Debuggen war jedoch sehr schwierig, da ich weder in meiner Datenbank doppelte Datensätze dieses Produkts finden noch Dateien importieren konnte.

Die Lösung:
Werfen Sie über die Befehlszeile alle ES-Indizes weg:
bin/console akeneo:elasticsearch:reset-indexes
Dann neu aufbauen:
bin/console pim:product:index --all
bin/console pim:product-model:index --all

Habe das gleiche Problem. Die von @wigman bereitgestellte Lösung hat mir geholfen. Danke
Das Problem trat auf, weil ich DB von einer Umgebung in eine andere kopierte, der Index war mit Sicherheit nicht derselbe.

Die von @wigman vorgeschlagene Lösung funktioniert nur für kleine Shops mit einigen tausend Produkten.
Der Befehl bin/console akeneo:elasticsearch:reset-indexes entfernt alles aus dem Index und dann müssen Sie einige Zeit warten, bis die Daten zurückkommen. Wenn Sie mehr als 150.000 Produktmodelle und mehr als 1.000 Produkte haben, ist dies keine Option, da die Neuindizierung bis zu 4 Stunden dauern kann.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen