Robert R.: Update Tabellenstruktur

Beitrag lesen

Liebe Mitdenker,
liebe Wissende,
liebe Neugierige,

ja!

kann man bei mysql die Tabellenstruktur ohne Datenverlust automatisch updaten?

Auf dem Haupt-Server habe ich Tabellenfelder eingefügt. Wenn ich nun die neuen Programme, die diese Felder ansprechen, auf dem Ersatz-Server laufen lasse, sind diese Felder in der Datenbank des Ersatzservers unbekannt.

Muss ich die Felder von Hand hineeinfrickeln oder gibt's da was?

Ich vermute, dass Du Spalten meinst?
Felder gibt es allerdings auch, als "Subtable" bei den Spaltentypen SET und ENUM.

Dein Stichwort heißt vermutlich ALTER TABLE
http://dev.mysql.com/doc/refman/5.5/en/alter-table.html

Das Hinzufügen von Spalten ist unproblematisch, solange dadurch nicht die maximale Spaltenzahl oder Zeilenbreite (Satzgröße) oder sogar die maximale Größe der Tabelle überschritten wird.

Die Änderung einer Spaltendefinition kann zu Problemen führen:

  • Spaltentyp: Umwandlung vom alten zum neuen Typ nicht immer möglich
                  Daten des alten Typs müssen in den neuen reinpassen
  • Index:      Breite beachten. Max. relevante Zeichenzahl 1000, kann
                  Bei breiten Spalten zur "Explosion" der Indextabelle
                  Führen
  • unique Idx: Bei doppelten -> Problem
  • autoincrement: Bei doppelten -> Problem

usw.
Man sollte immer vorher eine Kopie der Tabelle anlegen ;-)

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

Mann kann evtl. mit einem Union Select daraus eine gemeinsame Tabellenstruktur erzeugen aus zwei vorhandenen. Zumindest kann man es über den Umweg der API (z.B. PHP)

Spirituelle Grüße
Euer Robert

--
Möge der Forumsgeist wiederbelebt werden!