Rudi: Tabellenstruktur vergleichen

Hi,

ich habe zwei identische Tabellen (MySQL). Nun füge ich bei einer Tabelle ein Feld hinzu. Wie stelle ich es nun am besten an, mir das Fehlen dieses Feldes in der zweiten Tabelle anzuzeigen?

Sicher komme ich hier um ein Skript in irgendeiner Sprache nicht vorbei.
wie würdet ihr das am schlauesten machen?

danke!
Rudi

P.s. mir gehts nur um die Theorie, bitte keine gut gemeinten Hinweise wie "besser dokumentieren", "Replikation", "wozu brauchstn das?" oder ähnliches. Das weiß ich schon alles selber.

  1. Tach!

    ich habe zwei identische Tabellen (MySQL). Nun füge ich bei einer Tabelle ein Feld hinzu. Wie stelle ich es nun am besten an, mir das Fehlen dieses Feldes in der zweiten Tabelle anzuzeigen?
    Sicher komme ich hier um ein Skript in irgendeiner Sprache nicht vorbei.

    Ich wäre mir da nicht so sicher, ganz im Gegenteil. Es gibt die Pseudo-Datenbank information_schema mit einer Tabelle namens COLUMNS. Diese mit einem LEFT-Selfjoin an sich selbst binden und die Spalten der einen Tabelle mit denen der anderen Tabelle verknüpfen. Wenn auf der rechten Seite NULL auftaucht, dann fehlt da ein Feld.

    Dummerweise geht das so nur in eine Richtung. Für zwei Richtungen wäre ein Full Outer Join nötig, das kennt MySQL aber nicht. Als Ersatz braucht es dann eben zwei Abfragen.

    dedlfix.

    1. Hi,

      Ich wäre mir da nicht so sicher, ganz im Gegenteil. Es gibt die Pseudo-Datenbank information_schema mit einer Tabelle namens COLUMNS. Diese mit einem LEFT-Selfjoin an sich selbst binden und die Spalten der einen Tabelle mit denen der anderen Tabelle verknüpfen. Wenn auf der rechten Seite NULL auftaucht, dann fehlt da ein Feld.

      das würde mir schon mal helfen... allerdings wäre es natürlich praktisch, Informationen über dieses Feld zu haben, um die Tabelle eventuell upzudaten. Also doch ein Skript?

      Dummerweise geht das so nur in eine Richtung. Für zwei Richtungen wäre ein Full Outer Join nötig, das kennt MySQL aber nicht. Als Ersatz braucht es dann eben zwei Abfragen.

      das wäre erstmal völlig ausreichend.

      danke dir!

      1. Hi,

        das würde nur die Struktur angleichen, nicht aber die Daten.

        1. Hi,

          das würde nur die Struktur angleichen, nicht aber die Daten.

          genau, mir geht es nur um die Struktur, nicht um die Daten. Ansonsten würde ich einfach die Tabelle rüberkopieren oder ähnliches. Mir geht es also nur um den Vergleich der Tabellenstruktur. Idealerweise mit der Ausgabe der fehlenden Felder samt Information (typ, länge, auto-increment, comment, etc).

  2. Hi,

    ich habe zwei identische Tabellen (MySQL). Nun füge ich bei einer Tabelle ein Feld hinzu. Wie stelle ich es nun am besten an, mir das Fehlen dieses Feldes in der zweiten Tabelle anzuzeigen?

    MySQL-Workbench sollte das über einen Umweg können. Zuerst das DB-Schema lokal "importieren" (dann hast du quasi die Dokumentation in Workbench) und dann die Dokumentation mit der zweiten DB vergleichen.

    Vielleicht kann Workbench das sogar direkt.

    Bis die Tage,
    Matti

  3. ich mache es jetzt so, dass ich mir die beiden nötigen Tabellenstrukturen mit DESCRIBE tablename ausgeben lasse und über den Kram iteriere. Somit habe ich von beiden Tabellen Felder, die die jeweils andere nicht hat samt Metainformation. Ist zwar ein Skript nötig, aber um das auf den Konsole ausführen zu lassen, sowieso recht praktisch.