Um den Sicherungsprozess einer meiner MySQL-Datenbanken zu automatisieren, möchte ich die Struktur zweier Tabellen (aktuelle Version vs. alte Version) vergleichen.
Können Sie sich eine Abfrage vorstellen, mit der zwei Tabellen verglichen werden können?
Hier sind einige Beispieltabellen, die Sie vergleichen können.
CREATE TABLE product_today
(
pname VARCHAR(150),
price int,
PRIMARY KEY (pname)
);
CREATE TABLE product_yesterday
(
pname VARCHAR(150),
price int,
PRIMARY KEY (pname)
);
CREATE TABLE product_2days_back
(
pname VARCHAR(15),
price int,
PRIMARY KEY (pname)
);
Die ersten beiden Tabellen sind identisch aufgebaut. Der letzte ist anders. Ich muss nur wissen, ob zwei Tabellen unterschiedliche Strukturen haben oder nicht. Es interessiert mich nicht, wie sie sich unterscheiden.
Antworten:
ZWEI TABELLEN IN DER AKTUELLEN DATENBANK
Wenn Sie wissen möchten, ob zwei Tabellen unterschiedlich sind, führen Sie dies aus
Wenn Sie die Unterschiede tatsächlich sehen müssen, führen Sie dies aus
ZWEI TABELLEN IN EINER SPEZIFISCHEN DATENBANK
Wenn Sie wissen möchten, ob zwei Tabellen in der Datenbank unterschiedlich sind
mydb
, führen Sie dies ausWenn Sie die Unterschiede tatsächlich sehen müssen, führen Sie dies aus
ZWEI TABELLEN IN ZWEI VERSCHIEDENEN DATENBANKEN
Wenn Sie wissen möchten, ob
db1.tb1
unddb2.tb2
anders sind, führen Sie dies ausWenn Sie die Unterschiede tatsächlich sehen müssen, führen Sie dies aus
VERSUCHE ES !!!
quelle
Sie können die Prüfsumme der Ausgabe von SHOW CREATE TABLE product_today vergleichen
quelle
Erweiterung der Antwort von RolandoMySQLDBA:
Fragen Sie Folgendes ab, um auch den Tabellennamen anzuzeigen:
quelle
Schauen Sie sich die Spaltentabelle im Feld information_schema - column_type an. Auf diese Weise können Sie Tabellenstrukturen vergleichen.
quelle
Meine ultimative Methode zum Vergleichen von 2 Datenbanken (DB1, DB2) - nur Tabellen / Ansichten, Einschränkungen und Fremdschlüssel sind nicht enthalten. In meinem Fall verwende ich immer folgendes SQL, um PRODUCTION mit UAT oder UAT mit DEV zu vergleichen.
DB DIFF (Tabellen / Views vergleichen)
quelle
für alle Änderungen in der Tabellenstruktur zweier Datenbanken:
Ref .: von RolandoMySQLDBA ans
quelle