Vorgehen: Datenbank händisch migrieren/reparieren, nach gescheitertem 5.2.x Update

Hallo,

nachdem bisher alle früheren Shopware Updates mit dem AutoUpdater problemlos liefen, hatte ich neulich versucht von 5.1.6 auf 5.2.2 updzudaten (am ersten Tagdes Erscheines - mach ich nie wieder). Das ging in die Hose, danach waren keine Bestellungen mehr zu sehen. Ich habe daraufhin ein manuelles Rollback gemacht (eine Funktion, die ich übrigens extrem in Shopware bzw. dem Updater als feste Option vermisse), indem ich die Datenbanken und Dateien zurückgespielt habe. Ich habe die DB mit myPHPadmin zurück importiert.

Ich vermute, dabei ist mir der Fehler unterlaufen, dass einzelne Stücke der DB bereits aktualisiert worden waren und ich nur Inhalte geladen, aber nicht die ganze DB neu angelegt habe. 5.1.6 lief trotzdem danach wieder wunderbar.

Alle Versuche, jetzt noch mal upzudaten, schlagen jedoch fehl. Habe es heute nochmal mit der 5.2.3 via AutoUpdate versucht, da hagelt es zunächts DB-Fehler während des Updates, dass Tabellen vorhanden wären, die es gar nicht geben dürfte. Kein Problem, händisch gelöscht. Dann gibt es aber einen DB-Fehler im Updater, dass ein bestimmtes Column fehlt - ohne, dass die Fehlermeldung sagt, in welcher Tabelle! Das ist ziemlich blöd, denn ohne diese Info des Installers kann ich den Fehler nicht reparieren (oder?).

Meine Idee ist nun, ein sauberes 5.1.6 auf einer Dummy-Location einzuspielen, und die dann neu erzeugte (fast) leere DB zu nutzen um alle Inhalte aus meiner DB dort reinzustopfen. Hinterher müsste ich dann eine saubere DB haben (Inkonsistenzen innerhalb der DB befürchte ich nicht, nur zuviele/fehlende Tabellen/Felder).

Meine Frage: Ist das ein gangbarer Weg? Ich bin kein SQL-Experte, aber müsste es nicht relativ einfach auch mit myPHPadmin möglich sein, die Werte aus DB1 nach DB2 zu kopieren? Hat jemand einen Rat, mit welcher Funktion am besten?

Alternativ: Die vorhandene DB scheint ja in einem Zwischenstadium 5.x.x zu sein. Wenn ich genauere Fehlermeldungen hätte, als den reinen SQL-Fehler der im roten Feld im Updater angezeigt wird, könnte ich ja auch weiterhin jeden Fehler einzeln beheben. Aber, wie gesagt, ohne Tabellennamen kann ich kein Column irgendwo einfügen… Gibt’s da ne Chance an anderer Stelle ein ausführlicheres Log zu bekommen? 

Danke…

hallo

wenn du ein backup der datenbank von 5.1.6 hast mach doch folgendes.

Datenbank komplett löschen

datenbank mit gleichem namen neu anlegen (ansonsten musst du die config.php abändern)

dann das backup einspielen.

 

ansonsten bleiben daten von 5.2.2 hängen die beim überspielen nicht gelöscht werden.

1 Like

Hallo,

danke erstmal für die Info und sorry, dass ich nicht mal “phpMyAdmin” richtig schreiben konnte. Da ich nicht 100% sicher bin, ob ich richtig verstanden, bzw. mich richtig ausgedrückt habe, bzw. mit den Begriffen korrekt umgegangen bin, habe ich meinen Plan noch mal überdacht und anders formuliert:

  1. Ich weiß nicht, wann ich mir die DB-Strukturfehler eingehandelt haben. Höchstwahrscheinlich beim ersten Updateversuch 5.1.6 auf 5.2.2, aber who knows? 
  2. Darum scheint mir der Rückgriff auf ein älteres Backup nicht sooo schlau, wenn ich 100% sicher sein will, wieder eine saubere DB zu haben
  3. Darum: Eine wirklich cleane 5.1.6 DB erzeugen (am besten mit einer Neuinstallation an Dummylocation).
  4. Alle benötigten Plugins installieren und roh konfigurieren, damit alle DB-Strukturerweiterungen durch Plugins vorhanden sind (ich weiß, Magnalister legt lustig viele Tabellen an, und das werden andere Plugins sicher auch)
  5. Dann mit der phpMyAdmin-Funktion OPERATIONEN die DB-Daten meiner Produktivdatenbank in Neudatenbank kopieren (“Datenbank kopieren nach”), und zwar mit der Option “Nur Daten”, keinerlei Struktur
  6. Wenn das abgeschlossen ist, müsste ich doch eigentlich eine strukturell saubere 5.1.6 DB haben, mit den aktuellen Daten meiner Produktivumgebung
  7. Dann diese neue DB in die Produktivumgebung und ggfs. auch mit der phpMyAdmin-Funktion OPERATIONEN die neue DB auf den alten Namen umbenennen…

Müsste das nicht funktionieren?

Und noch ein echt doofe Frage hinterher: Wie kann ich eigentlich sicherstellen, dass während meiner Operation die DB nicht von anderen Prozessen angefasst wird? Nur Wartungsmodus reicht doch bestimmt nicht?

Danke und Grüße,

Jan

@jandings schrieb:

 

Dann mit der phpMyAdmin-Funktion OPERATIONEN die DB-Daten meiner Produktivdatenbank in Neudatenbank kopieren (“Datenbank kopieren nach”), und zwar mit der Option “Nur Daten”, keinerlei Struktur

Wenn das abgeschlossen ist, müsste ich doch eigentlich eine strukturell saubere 5.1.6 DB haben, mit den aktuellen Daten meiner Produktivumgebung

Müsste das nicht funktionieren?

Das wird wahrscheinlich nur funktionieren, wenn keinerlei Daten in der neuen Datenbank sind. Aber Du kannst das ja einfach ausprobieren, Du hast an der neuen Datenbank ja nichts zu verlieren.

Der Wartungsmodus reicht, damit die Datenbank seitens Shopware nicht angefaßt wird. Wenn Du allerdings noch andere Prozesse auf dem Server hast (Cron Jobs, etc.), die die Datenbank anfassen, solltest Du die während Deiner Arbeiten deaktivieren.

Timme Hosting - schnelles nginx-Hosting

www.timmehosting.de

1 Like