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