Ich schreibe dies als Halb-Außenstehender. Ich bin nur Arbeitskollege aus der IT-Abteilung eines Betriebs der sowohl selber ein Shopware-Shop betreibt wie auch mehrere Fremd-Shops supportet. Mehr durch Zufall bin ich heute damit konfrontiert worden als mir der Kollege von einem Problem erzählte und ich mir dann unseren eigenen Shop mal im Backend anschaute.
Mehrere Hinweise, dass es Updates gibt waren groß zu sehen und meine erste Frage war nicht: „Wo ist das Problem?“ sondern „Wieso verwendet ihr so eine alte Version?“. Antwort: Ja die Version ist rund 5 Monate alt weil es immer Probleme mit den Updates gibt und wir keine Lust haben anschließend 2 Tage im Wartungsmodus alles zu korrigieren.
Super Einstieg ins System und da ich schon mal da war: Komm wir machen das mal Update - neu ist immer besser. Klicken brav das Formular durch und stellen erstmal fest: Wenn man auf Installieren klickt passiert nichts. Hmm haben wir was falsch gemacht? Gut mal Browsertool gezückt und geschaut was passiert wenn man draufklickt. Er läd im Hintergrund scheinbar etwas sobald man da drauf klickt aber auf dem Bildschirm passiert nichts. Und wenn man mehrmals draufklickt lädt er sogar mehrfach etwas. Ok warten wir mal. Nach 3 Minuten dann mehrere Fehlermeldung die wohl darauf hindeuteten, dass wir zu oft draufgeklickt haben.
Nagut… Update wurde nicht gestartet wir laden alles Neu, keine Fehlermeldung also nächster Versuch. Diesmal klicken wir brav nur einmal auf den Knopf und warten. Und tatsächlich fängt der Shop nach mehreren Minuten bangen wartens endlich an das Update runterzuladen. Auf in den Kampf: Update starten, Systemvorraussetzungen erfüllt und im ISDN-Gallop gehts weiter zur Datenbankmigration. Und da passiert es.
Error
Received the following error message:
Could not apply migration (Migrations_Migration708). Error: SQLSTATE[42S01]: Base table or view already exists: 1050 Table 's_filter_options_attributes' already exists
Please try to fix this error and restart the update.
Response
{"valid":false,"errorMsg":"Could not apply migration (Migrations_Migration708). Error: SQLSTATE[42S01]: Base table or view already exists: 1050 Table 's_filter_options_attributes' already exists "}
Hmm… der Kollege hat wohl recht, die Updates machen scheinbar wirklich Probleme. Aber was nun?
Seite aktualisieren und hoffen, dass es von alleine weg geht oder sollen wir wie angefordert versuchen das Problem zu beheben. F5 ging schneller deswegen probierten wir es erneut und wieder der selbe Fehler. Schade wäre auch zu einfach.
Also dann machen wir uns daran das Problem zu fixen. Tabelle s_filter_options_attributes soll bereits existieren also mal schauen ob das stimmt. Und tatsächlich war sie bereits vorhanden und leer. Nagut sie ist leer also löschen wir sie doch mal wie gewünscht. Scheinbar muss sie neu erstellt werden damit das Update durchläuft. Also Tabelle gelöscht, F5, Datenbankmigration und schwupps…
Error
Received the following error message:
Could not apply migration (Migrations_Migration708). Error: SQLSTATE[42S01]: Base table or view already exists: 1050 Table 's_filter_options_attributes' already exists
Please try to fix this error and restart the update.
Response
{"valid":false,"errorMsg":"Could not apply migration (Migrations_Migration708). Error: SQLSTATE[42S01]: Base table or view already exists: 1050 Table 's_filter_options_attributes' already exists "}
Joa… interessant. Tabelle ist in der Datenbank definitiv wieder vorhanden. Wie es aussieht erstellt das Update die Tabelle mehrfach und das ohne Fallback-Kontrolle.
Das ist schlecht, denn der Shop ist nun im Wartungsmodus und man kommt weder ins Front- noch ins Backend. Will man den Fehler beheben taucht er wieder auf - kein vor und kein zurück. Ich fange an zu verstehen warum der Kollege keine Lust auf Updates hatte.
Fragen wir mal Dr. Google, der zum entsetzen der shopware AG erstaunlich viele Ergebnisse zu fehlgeschlagenen Updates und „Wartungsmodus“-Problemen findet. Es gibt zwar auch einzelne Lösungsansätze die dem Laien sagen wie man das Update neu startet oder gar den ganzen Update-Ordner löscht, aber nichts davon half. Gut der Shop ist scheinbar im Arsch und wir hatten bereits das Backup-Fenster geöffnet aber irgendwie kann das doch nicht sein.
Wir verursachen bei einem simplen Update einen totalen Crash des Shops und wir hören das von diversen anderen Kunden auch - nicht nur beim aktuellen Update. Im Web gibt es zig Fragen und auch dieses Forum ist überhäuft mit engagierten Händlern dessen Einnahmequelle durch ein Sicherheitsupdate mal eben dicht gemacht wird.
In dem genannten Beispiel ist es ein simpler SQL-Fehler der offensichtlich vom Update verursacht wurde und wahrscheinlich durch die einfachen Wörter „IF NOT EXISTS“ umgangen werden könnten.Ganz davon zu schweigen, dass der Marktführer in Sachen Shop-Systemen, doch mal irgendwie sowas wie ein Sicherungsmechanismus und sei es try{ } in das Update-System intgrieren können sollte. Besonders dann wenn er nicht mal richtige Updates fährt, sondern jedes Update eine 34MB große Vollversion ist bei dem nur die Datenbank wirklich im Updateprozess angefasst wird.
Wahrscheinlich werden viele Shopbesitzer keine großen Probleme mit Updates haben - hoffe ich jedenfalls. Aber bei Shopware-Besitzern die zu uns kommen sind die wenigsten Systeme aktuell und viele klagen genau über solche Probleme. Hier im Forum sind doch einige solcher Fragen und Google kennt noch deutlich mehr. Und das darf einfach nicht der Fall sein.
Von daher die bitte an den Community-Support. Bitte aufstehen, ins Büro der IT-Abteilung gehen und dem Team das für die Updates-Funktionen zuständig ist ein Glas kaltes Wasser ins Gesicht kippen. So gehts nicht und es ist mindestens eine Frechheit was hier abgeliefert wird. Von finanziellem und Image-Schaden für die einzelnen Händler und der shopware AG selber ganz zu schweigen.
Und wo wir schon dabei sind: In PHP gibts eine Funktion die nennt sich trim() welche sich hervorragend eignet um Formulareingaben zu reinigen und bei den Standard-Plugin wie z.B. „Statistics“ könnt ihr wenigstens so tun als ob sie seit 2010 mal wieder aktualisiert worden wären.
Schön Gruß