MySQL Tabellenstruktur per .sql datei Updaten****

counterpuncher

Grünschnabel
Hallo zusammen,

folgende Situation: Ich habe eine Art CMS programmiert, das die Nutzer selbst mittels einer Updatefunktion auf die aktuellste, von mir zur Verfügung gestellte, Version updaten können.

Diese Updatefunktion funktioniert so, dass das CMS mit meinem Server kommuniziert und prüft, ob eine aktuellere Version verfügbar ist. Wenn dies der Fall ist wird der Nutzer aufgefordert das Update durchzuführen. Dabei wird eine GeZipte Datei von meinem Server auf den jeweiligen Nutzerserver kopiert und entpakt. Die PHP Scripte etc. lassen sich somit sehr komfortabel auf den neusten Stand bringen.

Allerdings kann es nun vorkommen, dass sich bei einem Update die Struktur der Datenbank ändern soll, also bspw. bei einer Tabelle eine Spalte, oder ggf. eine komplett neue Tabelle dazukommt. Ich dachte mir nun, dass ich ähnlich wie bei der Installation des CMS aus einer .sql-Datei, in der alle Strukturen gespeichert sind, die vorhandenen Tabellenstrukuren "quasi ergänzen/ändern/updaten" kann. Das funktioniert allerdings nur mit komplett neuen Tabellen die hinzukommen im Sinne von "Insert if not exists".
Meine Frage ist nun, wie ich in diesem automatischen Updatevorgang auch Tabellenergänzungen/-änderungen einfließen lassen kann.

Vielen Dank schon mal
CP
 
Du könntest ja auch hierfür eine Sql Scripte zur Verfügung stellen die dann die Änderungen machen zb Tabellen Name ändern:
SQL:
ALTER TABLE Tabelle CHANGE Name Nachname TEXT NOT NULL
 
Zuletzt bearbeitet von einem Moderator:
Hallo Michael,
danke für deine schnelle Antwort.

Sowas in der Art habe ich mir auch schon überlegt. Das birgt aber gewisse Schwierigkeiten.
Wenn ein Nutzer bspw. eine Updateversion überspringt (also von 1.0.4 auf 1.0.6 updatet) bekommt er die MySQL-Aktualisierungen aus 1.0.5 nicht mit AUßER ich würde in diesem Script alle je an der Datenbank gemachten Änderungen "sammeln" und bei jedem Update von neuem ausführen, auch wenn das bereits mit vorigen Updates geschehen ist. Dann müsste allerdings bei jeder einzelnen Aktualisierung geprüft werden, ob sie bereits ausgeführt wurde, denn sonst würde bspw. beim Spalten hinzufügen jedes mal die gleiche Spalte noch einmal hinzugefügt werden oder das Update würde mit einem MySQL-Fehler abbrechen, da eine Spalte mit dem Namen schon vorhanden ist. Sehe ich das richtig?
 
Merke dir doch einfach, welche Version installiert ist und welche aktuell ist. Wenn dazwischen andere Versionen liegen, dann lade diese auch herunter. Und dann führst du die nacheinander aus, die älteste zu letzt.
 

Neue Beiträge

Zurück