Kompatibilität der 4.x.x-Datenbanken


#1

Hallo alle,

ich möchte einen Shop von 4.8.4 auf 4.10.7 updaten. Aber was ich mache, ist kein echtes Update. Die 4.8.4 läuft auf meinem alten Server, die 4.10.7 habe ich eben auf meinem neuen Server ans Laufen gebracht.
Sind die Datenbanken von 4.8.4 und 4.10.7 kompatibel? Kann ich einfach einen Datenbank-Dump der 4.8.4 in die 4.10.7 einlesen?
Ich weiß, es gibt ein Update-Paket. Das funktioniert aber nur bei installierter 4.8.x. Wenn ich das benutzen wollte, bräuchte ich nur den Teil, der mir die Datenbank anpasst. Sofern eine Anpassung denn überhaupt notwendig ist.
Vielen Dank im Voraus

Fero

Nachtrag: Ich hab da unter updateApp/updates/sql drei SQL-Skripte gefunden, nämlich 4.9.0.sql, 4.10.0.sql und update_version.sql.
Gehe ich recht in der Annahme, dass ich meine alte 4.8.4-Datenbank auf meinen neuen Server transferiere (noch nicht in den Shop einbinde) und über diese Datenbank dann diese drei Skripte drüber laufen lasse (erst 4.9.0.sql, dann 4.10.0.sql und zum Schluss update_version.sql), und danach kann ich die daraus entstandene Datenbank für meine 4.10.7-Shopversion einsetzen?


#2

Fragen 1 & 2: nein
Frage 3: jain. In einigen Fällen funktioniert es, in anderen aber nicht.

Hintergrund:
Nach der Anleitung soll ja updateApp in den Shop hochgeladen und aufgerufen werden. Und dieser Script aktualisiert dann die Datenbank.
Schau mal in die Datei updateApp\updates\php\4.9.0.php, da ist ebenfalls SQL Zeug hinterlegt, das nur unter bestimmten Bedingungen ausgeführt werden soll. Bei kleineren Updates / Patches wird da nur die SQL Datei ausgeführt und sonst nichts, aber in dem Fall wird ein zusätzliches Feld angelegt, was in den reinen SQL Dateien vermutlich nicht passiert. Je nach Shop Edition oder Version stehen dort auch unterschiedliche Dinge drin, das sollte man niemals auslassen.

Fazit:
Wenn auch einige Schritte übersprungen werden können, sollte man trotzdem der Anleitung folgen.


#3

am ende kannst ja nochmal ein diff auf die db struktur mit einer firschen Installation machen, dann siehste ob die struktur ok is.


#4

Also, inzwischen scheint der Shop ordentlich zu laufen. Ich habe also einen Dump der alten Datenbank in die neue eingelesen. Dabei fehlte wohl in einer Tabelle eine Spalte, nämlich in “oxarticles” die Spalte “oxshowcustomagreement”. Ich wollte sie manuell hinzufügen, aber das ging zunächst nicht, weil MySQL sich dabei immer beschwerte, dass der Default-Wert für den Zeitpunkt des Bestellens oder Abbestellens des Newsletters ungültig sei (das sind die vielen Nullen für Datum und Uhrzeit). Also, das sind in der Tabelle “oxnewssubscribed” die Spalten “oxsubscribed” und “oxunsubscribed”. Die sind ja vom Typ “datetime” und haben als Standardwert “0000-00-00 00:00:00”. Mit diesem Standardwert also war MySQL nicht einverstanden. Das liegt an der Version, in meinem Fall 5.7. Da gibt’s irgendwie verschiedene SQL-Modes, davon sind ab 5.5 oder 5.6 zwei standardmäßig eingeschaltet, die vorher ausgeschaltet waren oder die es nicht gab, und zwar NO_ZERO_IN_DATE und NO_ZERO_DATE. Ich hab mir also alle Modes ausgeben lassen mit dem Befehl
show variables like ‘sql_mode’;
und dann in die mysqld.cnf unter [mysqld] alle diese Modes explizit eingetragen außer den besagten. Die Zeile sieht dann so aus:
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Und bis diese Probleme nicht gelöst waren, konnte ich im Backend auch die Artikel nicht bearbeiten, es kam dann immer die Meldung, dass der Shop offline sei.
Das scheinbar einzige Problem, was jetzt noch vorhanden ist, ist, dass keine Produktbilder angezeigt werden, weder im Backend noch im Frontend, obwohl alle an ihrem Platz sind und der Name auch angezeigt wird. Es ist immer nur das Platzhalterbild zu sehen.
Aber dieses Problem lässt sich lösen, indem man die Bilder neu hochlädt. Ist zwar viel Arbeit, aber was soll’s?
Ich schreibe das jetzt hier so ausführlich, damit vielleicht auch andere noch was davon haben, falls sie auf die selben Probleme stoßen sollten.

Viele Grüße und danke an alle, die mir hier mit Rat und Tat zur Seite standen

Fero

P.S.: Ich stelle gerade fest: die Spalte, die ich hinzugefügt habe, das ist genau das, was im oben erwähnten PHP-Skript 4.9.0.php steht.


#5

ja mysql 5.7 ist etwas strikter, aber ich habe es auch schon so gelöst.