Shopware funktioniert ohne ElasticSearch nicht korrekt

Hallo,

ich habe leider die Erfahrung gemacht, dass Shopware 6 ohne ElasticSearch nicht korrekt funktioniert.

Im Backend kriege ich beim Speichern von Artikel den Fehler „Bitte fülle alle Pflichtfelder aus.“.
Ich habe den Ajax Call geprüft und die konkrete Fehlermeldung lautet:

An exception occurred while executing 'REPLACE INTO `product_keyword_dictionary` (`id`, `language_id`, `keyword`) VALUES ('�J;l��EN���f�de','/�_��Mp�XT�|��','test'), ('E蟡`�K�˲W�','/�_��Mp�XT�|��','artikel'), ('���IEo�=+#)-y�','/�_��Mp�XT�|��','Test'), ('E��P��BH��#a�6','/�_��Mp�XT�|��','Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. lorem ipsum'), ('RĠ��Mߛ���&�','/�_��Mp�XT�|��','SW10143');':

SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'keyword' at row 4

Anscheinend wird beim speichern immer der Index neu aufgebaut.
Die Spalte keyword in der Tabelle product_keyword_dictionary ist vom Typ „VARCHAR(500)“, lässt also Maximal 500 Zeichen zu.
Beim Index aufbauen wird anscheinend auch immer die Beschreibung in den Index gepackt.
Dadurch kommt es immer zum Fehler wenn Änderungen am Artikel gespeichert werden.

Das Speichern des Artikels klappt trotzdem, jedoch klappt die Indexierung nicht mehr.
Das heißt die Preise werden im Frontend nicht aktualisiert.
Ebenso wird die SEO URL nicht mehr generiert.

Ich habe einmal den Task bin/console dal:refresh:index aufgerufen um den SEO Index neu zu generieren.
Auch hier gibt es nur einen Fehler und der Index kann nicht generiert werden:

In AbstractMySQLDriver.php line 128:

  An exception occurred while executing 'REPLACE INTO `product_keyword_dictionary` (`id`, `language_id`, `keyword`) VALUES ('����1J��*��|','/�_��Mp�XT�|��

....


  SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'keyword' at row 33


In Exception.php line 18:

  SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'keyword' at row 33


In PDOConnection.php line 55:

  SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'keyword' at row 33

Außerdem habe ich noch bemerkt dass das Speichern von Bewertungen am Artikel ebenfalls nicht klappt.
Der Ajax Request zum absenden der Bewertung wirft den gleichen „Internal Server Error“ und der Kunde kriegt dadurch kein Fehler-Feedback.
Gespeichert wurde die Bewertung aber, wenn der Kunde nun mehrfach auf „Bewertung speichern“ klickt, wird jedes mal eine neue Bewertung angelegt.

Kurz gesagt, der Shop funktioniert nicht korrekt wenn man ohne ElasticSearch arbeitet und es einen Artikel gibt, bei dem die Beschreibung (oder ein customField) gibt, bei dem der Inhalt länger als 500 Zeichen ist.

Testweise habe ich in der lokalen Entwicklungsumgebung ElasticSearch angebunden, und anschließend waren alle genannten Fehler behoben.
Das liegt vermutlich daran dass ElasticSearch nicht auf 500 Zeichen im Index begrenzt ist.

Es wäre nun also eine Lösung einfach ElasticSearch zu verwenden, aber wenn Shopware 6 im Standard ohne ElasticSearch klappt, ist das ja eine Falschaussage weil es an diversen Stellen hackt und diverse Shop Funktionen nicht klappen.

Änderungen am Artikel (Preisänderungen, Name für SEO URL etc) werden auch nicht im Listing angezeigt, weil der Index nicht aufgebaut werden kann.

Aufgefallen ist dies, weil der Kunde im Shop erst alle Produktdaten gepflegt hat und die lange Beschreibung erst im zweiten Schritt hinzu kam.
Wenn die Beschreibung weniger als 500 Zeichen hat, klappt alles Problemlos.

Meine Frage daher:
Ist es beabsichtigt dass der Shop ohne ElasticSearch nicht sauber funktioniert oder ist dies schlichtweg ein Fehler, der behoben werden sollte? (z.B. Einträge in die „product_keyword_dictionary“ Tabelle truncaten, wenn der Inhalt >500 Zeichen hat)

Danke im voraus.

Verwendet wird Shopware v6.4.7.0 Stable Version

1 „Gefällt mir“

ping Sonst niemand der Probleme mit Shopware 6 ohne ElasticSearch hat?

1 „Gefällt mir“

Hallo alphanyx,

leider fehlen mir die Kenntnisse um Elastic Search einzubinden.
Aber ich habe ich diese Probleme, dass die Meldung „Bitte fülle alle Pflichtfelder aus" dauernd erscheint und nicht nur, dass diese erscheint, es werden auch nicht alle Änderungen übernommen.
So z.B. bei Produktbewertungen, wenn ich diese freischalten will, dann kommt der Fehler und die Bewertung ist nicht freigeschaltet. Nach mehreren Versuchen geht dann was, dann sehe ich aber doppelte Einträge.

Ich kann mit diesem Fehler leider nicht arbeiten und es ist ein grosser Rückschritt in Shopware.
Bitte prioisiert den Fehler höher ein, danke.

Schöne Grüsse
Markus

Hallo Markus,

Aber ich habe ich diese Probleme, dass die Meldung „Bitte fülle alle Pflichtfelder aus" dauernd erscheint und nicht nur, dass diese erscheint, es werden auch nicht alle Änderungen übernommen.

Ist nur eine Vermutung von mir, aber ein ähnliches Problem kann ich anhand eines Beispiels ebenfalls erläutern:
Im Produkt Listing steht bei dem Produkt „Ab 4,90€“. Ich habe den günstigsten Preis aber auf 4,60€ geändert. Die Anzeige im Listing wurde allerdings nicht angepasst. Auf der Detail-Seite passt es wieder.
Meine Vermutung ist dass hier ein Indexer für die Preise im Listing zuständig ist.
Da der Index durch den Keywords Fehler nicht aufgebaut werden konnte, wurden die Preise im Listing nicht korrigiert. Sobald ich die Beschreibung auf weniger als 500 Zeichen reduziert habe, wurde der Preis nach dem Speichern (ohne Fehlermeldung) im Listing auch korrekt angepasst.

Mit ElasticSearch und einer Beschreibung über 500 Zeichen trat das Problem gar nicht erst auf.

So z.B. bei Produktbewertungen, wenn ich diese freischalten will, dann kommt der Fehler und die Bewertung ist nicht freigeschaltet. Nach mehreren Versuchen geht dann was, dann sehe ich aber doppelte Einträge.

Auch hier wird ein Index aufgebaut sobald man Bewertungen schreibt, auch dieser Wirft einen Fehler wenn die Beschreibung am Artikel, zu den die Bewertung gehört, länger als 500 Zeichen ist.

Nach mehreren Versuchen geht dann was, dann sehe ich aber doppelte Einträge.

Das Speichern wirft nach mehreren Versuchen auch keinen Fehler „Bitte fülle alle Pflichtfelder aus“ mehr.
Shopware speichert nur geänderte Daten. Beim ersten speichern wurde die Beschreibung auf >500 Zeichen gesetzt und der anschließende Indexer hat einen Fehler erzeugt, wodurch das Speichern im Backend den Fehler „Bitte fülle alle Pflichtfelder aus“ geworfen hat. Die Änderung wurde aber vorgenommen.
Nachdem ich erneut auf speichern gedrückt habe, wurde nichts mehr gespeichert weil Shopware erkannt hat dass die Beschreibung sich nicht verändert hat und somit wurde der Indexer ohne Änderung nicht angestoßen und das speichern klappte ohne Fehlermeldung.

Das sind bisher meine Erfahrungen.
Es würde mich aber wundern wenn es sich ausschließlich um ein Problem bei mir handelt.

2 „Gefällt mir“

Wenn ich diesen Plain-Text als Beschreibung nehme:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus id augue est. Aenean quis consequat tortor. Sed non pretium tortor. Sed varius aliquam nunc non efficitur. In mollis sed magna quis imperdiet. Proin lacus massa, auctor et rutrum vel, hendrerit vel ipsum. Nunc orci ante, ultrices ac ullamcorper vitae, dictum sit amet nisl. Phasellus bibendum, lectus eget pellentesque fermentum, massa magna auctor tortor, ac iaculis lorem nibh a felis. Nunc non mauris augue. Vivamus consectetur123

Dann habe ich keine Fehlermeldung

hänge ich noch ein Zeichen an, dann ist der Text 501 Zeichen lang, dann erscheint der Fehler.

Da ich HTML verwende für die Beschreibung habe ich die 500 Zeichen sofort erreicht.

Hast Du diesen Effekt bei Dir auch?

1 „Gefällt mir“

Guten Morgen,
wir hatten bei einem Kunden das gleiche Problem. Wir konnten es in dem Einzelfall lösen, da Log geprüft und Datenbank analysiert.
Besteht das Problem weiterhin? Falls ja hätte ich ggf. eine Lösung, die wir durch das Prüfen von paar Einstellungen vielleicht finden könnten.
Natürlich hier im Forum und ohne Entgelt.

Liebe Grüße Ryusei - HosonoDE

1 „Gefällt mir“

Hallo,
ich habe das Problem auch: wir wollen von SW5 auf SW6 migrieren (inkl. Varianten ca. 240.000 Artikel). Unsere Indizierung bleibt bei 150 Restartikeln stecken, aus diesen 150 Stk. konnte ich einen Verdächtigen ermitteln. Dieser hat 2208 Zeichen in der Beschreibung und viele Varianten (> 12.000, war unter SW5 kein Problem!). Beim Speichern dauert es ewig, dann kommt irgendwann die Fehlermeldung „Bitte fülle alle Pflichtfelder aus“.
Wie kann ich das denn nun lösen?

Hallo @raschu ,
das klingt wohl nach einem anderen Problem. (kann aber das gleiche sein?)

Wir hatten folgendes Problem:
Wenn man unter Einstellungen > Suche die Beschreibung suchbar gestellt hat, hat Shopware versucht die Produktbeschreibung zu indexieren. Da die Datenbank Zelle dafür nicht geeignet ist, entstand der Bug, dass nicht mehr gespeichert werden konnte.
Daher war die Lösung, einfach den Haken bei der Suche zu entfernen, da sowieso nicht empfehlenswert ist die Beschreibung für die Suche zu nutzen, da sonst zu viele irrelevante Ergebnisse auftauchen.

Liebe Grüße Ryusei - HosonoDE

1 „Gefällt mir“

leider löst das hier das Problem nicht -

Ich kann das Problem bestätigen, mit Produktbeschreibungen >500 Zeichen bekomme ich den beschriebenen Fehler, <500 funktioniert alles.

Ein Ausschließen der Produktbeschreibung bei den Einstellungen der Suche „löst“ das Problem.

Hallo,

zu diesem Thema habe ich ein Ticket im öffentlichen Issue-Tracker erstellt unter

Grüße
Dennis

Wir stehen gerade mit einem Kunden vor dem gleichen Problem. Sobald wir die Beschreibung in die Suche mit einbeziehen werden die Produkte nicht gefunden.

Wir haben eingestellt, dass der Suchbegriff getrennt werden soll. Wenn wir uns das Such Query dann im Profiler anschauen finden wir bei dem Suchbegriff MacBook Pro aber nicht die Einzelbegriffe MacBook und Pro sondern ein Statement mit dem WHERE Statement

product.searchKeywords.keyword IN (‚macbook pro‘, ‚mehrere hundert zeichen umfassender Beschreibungstexts eines anderen Produkts‘)`.

Anscheinend liegt es an Sonderzeichen < in der Produktbeschreibung (was so gut wie alle beschreibungen mit HTML beinhaltet). Das Ausführen des Querys:

DELETE FROM product_keyword_dictionary WHERE keyword LIKE ‚%<%‘

führt dazu, dass die Produkte gefunden werden.