T-Rex: 2 mysql db auf Struktur hin vergleichen

Beitrag lesen

Mal im Ernst, hast Du überhaupt ne Ahnung, wozu diese Art von Feature zuständig ist?
Es geht darum, Entwicklungssysteme mit Produktivsystemen abzugleichen.

Okay darauf wäre ich echt nicht gekommen.
Seit meinem letzten Arbeitgeber benutzten ich Updatescripte. Die bestehen aus einer Datei mit MySQL Befehlen und einer Versionsnummer und einem Script, das sich um das Einspielen und Versionsnummer hochzählen kümmert.
Die Update Datei sieht so aus:

/*---|:| 124 |:|---*/
ALTER TABLE MAIL ADD MAIL_TRIGGER_IP VARCHAR(23) NOT NULL DEFAULT "";

/*---|:| 125 |:|---*/
ALTER TABLE RECALL MODIFY RECALL_DESCRIPTION VARCHAR(1024) NOT NULL DEFAULT "";

Das Updatescript sucht nach der letzten Versionsnummer (Deshalb auch die etwas umständliche schreibweise mit |:|), sagen wir mal 123. Dann zählt es eins drauf, also 124 und führt den SQL Befehl aus. In diesem Fall wird die Tabelle Mail erweitert. Dann speichert es in der Datenbank (kann aber auch eine Datei sein) die neue Versionsnummer. Das ganze geht dann rekursiv weiter bis die Datei zu Ende ist oder ein Fehler bei einem SQL Befehl aufgetreten ist.

Der Vorteil:

  • Es gibt keinen Abgleich mehr. Man lässt einfach das Updatescript ausführen und ist auf dem neusten Stand. Das läuft natürlich vollautomatisch.
  • Anstelle von Datenbank Erweiterungen kann man auch Änderungen des Datenbestandes eintragen z.B. Geschlecht von "mannlich", "weiblich" auf "m", "w" umstellen.
  • Man könnte das Script auch erweitern, dass PHP Befehle ausgeführt werden - z.B. das Dumpen von Daten.
  • Bei der Versionsnummer könnte man noch das Datum dazu schreiben, dann hat man eine Perfekte Log-Datei mit der man beweisen kann wann was hinzukam. Dass kann bei späteren Problemen helfen.

Gibt aber noch einen kleinen Nachteil. Wenn die SQL Systeme nicht kompatibel sind, kann es sein dass man SQL Befehle verfasst die im Testsystem funktionieren aber im Produktivumfeld nicht mehr. Das Problem trat bei mir mit Views und Indexfeldern auf.

Mein Updatescript besteht aktuell aus 2-3 PHP Dateien. Die sind auf mein System angepasst. Wenn du ganz lieb frägst, baue ich es so um dass man es global benutzten kann, schreibe noch eine kleine Doku dazu und stelle es selfhtml als Download zu Verfügung.

Gruß
Upgrade
T-Rex