Tritt der Fall auf das man im Performance Modul plötzlich nicht mehr speichern kann:

Invalide Daten

In den Formularen sind noch invalide Daten eingetragen, bitte kontrollieren Sie die Formulare

Dann fragt man sich erst einmal wo das denn bitte herkommt. Diese Frage kann ich nicht beantworten 🙂 Aber das Problem lässt sich trotzdem lösen! In diesem Fall fehlen meistens Einträge in der Tabelle:

s_core_config_elements

Welche fehlen lässt sich mit durchklicken durch alle Optionen des Performancemoduls herausfinden. Fehler werden nach dem erfolglosen Speichern durch eine gewellte rote Linie unterstrichen.

mit einem Rechtsklick auf das Feld gefolgt von der Auswahl des Punktes „Untersuchen“ aus dem Kontextmenü bekommt man eine Ausgabe ähnlich wie die folgende.

In diesem Fall heisst der fehlende Wert „topSellerValidationTime“.

Wo bekommt man die nötigen Werte nun her ?

Wenn man sich die aktuelle Shopware herunterlädt gibt es unter/recovery/install/data/sql/install.sql alle nötigen Querys.

Sucht man hier nach „INSERT INTO `s_core_config_elements` VALUES “ findet man die entsprechende Zeile in der alle Werte geschrieben werden.

Sucht man hier weiter nach „topSellerValidationTime“ erhält man folgende Zeile aus dem Query:

(915,0,'topSellerValidationTime','i:100;','','','',1,0,0,'')

Daraus basteln wir uns den nötigen Query

INSERT INTO `s_core_config_elements` (`id`, `form_id`, `name`, `value`, `label`, `description`, `type`, `required`, `position`, `scope`) VALUES (915,0,'topSellerValidationTime','i:100;','','','',1,0,0,'')

Das ganze einfach für alle fehlenden Werte wiederholen. Der hier Beispielhaft verwendete Name „topSellerValidationTime“ muss selbstverständlich durch den Wert ersetzt werden den Shopware nicht speichern kann.

Den fertigen Query dann im MySQL Backend der Wahl (PhpMyAdmin etc.) in der ausgewählten Shopdatenbank ausführen.

Erscheint eine Meldung in der Art von : „1 Datensatz eingefügt“ dann ist alles gut gelaufen.

Erscheint eine Meldung in Richtung : „Fehler, doppelter Datensatz“ oder „Ein Eintrag mit der ID 915 ist bereits vorhanden“ dann hats nicht geklappt. Hier kann man nun aber prüfen ob einfach nur der Wert falsch gespeichert ist:

SELECT * from `s_core_config_elements` WHERE name="topSellerValidationTime";

Dort sollte dann in der Spalte „value“ ein „i:“ gefolgt von einer Zahl stehen. Ist dies nicht der Fall, dort einfach „i:100“ (den SW Standard) eintragen.


2 Kommentare

Arne · 20. März 2017 um 06:43

Hallo , danke für den Tipp. Aber es tut sich nichts, rein garnichts. Muss ich den ganzen String einfügen? Und für topSellerValidationTime eine Zahl ? Oder muss der String in 2 Strings geteilt werden ? Ich habe auch den ganzen String bei topSellerValidationTime getauscht , aber auch nichts , was genau ist mein Fehler, können Sie da mehr ins Detail gehen , da ich kein Codeschreiber bin .

Danke

Jens Fiedler · 20. März 2017 um 08:38

Hi,
ich kann es gern versuchen.

Erst einmal muss man feststellen ob es sich wirklich um diese Einstellung handelt die es bei mir war.
Ist es diesselbe Einstellung wie bei mir (topSellerValidationTime) dann kann der Query wie ich ihn gepostet habe direkt so in PhpMyAdmin oder welches Administrationsscript im Einsatz ist verwendet werden. (also Datenbank des Shops auswählen, auf SQL klicken, den Query einfügen und auf „OK“ klicken).
Dann meldet der Server zurück das er diesen Datensatz eingefügt hat, oder das es diesen Datensatz bereits gibt. Bei letzterem war es dann doch ein anderer Datensatz.

Der Standardwert der hier geschrieben wird ist i:100, also Integer 100.

Ich werde heut Abend den Text noch etwas ausführlicher schreiben !
Wenn du magst kann ich mir das auch evtl mal per Teamviewer bei dir anschauen. Ist auch kein Problem.

Gruß,
Jens

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert