Linuchs: Update Tabellenstruktur

Beitrag lesen

Hallo Robert,

Ich vermute, dass Du Spalten meinst?

Ja.

Das Hinzufügen von Spalten ist unproblematisch, ...

Naja, nicht so ganz. In meinem Fall habe ich zwei Domains example.com und beispiel.de bei zwei getrennten Providern, damit bei Ausfall des Einen mit dem Anderen weitergearbeitet werden kann.

Auf example.com wird gearbeitet, beispiel.de ist der backup-Server, der sich - von Hand angestoßen - Dateien und neue Datenbank-Zeilen von example.com holt. Dazu wird per Browser auf beispiel.de ein PHP Programm gestartet. Es "unterhält" sich also mit seinem Partner-PHP-Programme auf beispiel.de, die beiden vergleichen Daten und example.com sendet Zeilen, die beispiel.de noch nicht hat (inkrementelle Sicherung (schnell)). Ausserdem wird bei beispiel.de auch gelöscht, was example.com nicht (mehr) hat.

Nun müssen natürlich auch die bei example.com neu eingefügten Spalten bei beispiel.de "nachgepflegt" werden. Das ist meine Problematik. Bisher habe ich phpmyadmin bei beispiel.de aufgerufen und die Spalten von Hand eingefügt. Das kann aber der Kunde nicht, also versagt die Datensicherung, wenn nur eine neue Spalte dazugekommen ist.

Die vorhandene Spaltendefinition kann man übrigens wunderbar aus dem Information_Schema abfragen. Habe ich mir gerade eine Funktion gebaut dafür.

Gut, dann muss das PHP-Programm auf beispiel.de "seine" Spalten pro Tabelle ermitteln und sich vom PHP-Programm auf example.com deren Spalten geben lassen, vergleichen, und fehlende einfügen. Das Prinzip ist klar, ich hatte aber gehofft, auf eine bequemere Weise ans Ziel zu kommen, ohne tief in die Struktur der beiden DB eintauchen zu müssen. Auch die Reihenfolge der Spalten sollte identisch sein.

Es gibt doch dieses wunderbare SQL-Kommando "update insert if not exist", das leider nur fehlende Zeilen, aber keine fehlenden Spalten einfügen kann. So ein Kommando wäre toll.

Eine Alternative wäre vielleicht, bei Struktur-Unterschieden die betroffene Tabelle insgesamt neu aufzubauen. Bei kleinen Tabellen kein Problem, aber ... Hier mal die Übersicht der Datenbank:

Datenbank

Gruß Linuchs