Für jede Tabelle in meiner MySQL-Datenbank habe ich eine mytablename.sql
Datei, die die CREATE TABLE
Anweisung für diese Tabelle.
Ich möchte einen Test hinzufügen, um zu überprüfen, dass niemand eine Spalte in der Live-Datenbank hinzugefügt/geändert hat, ohne diese Datei zu aktualisieren - das heißt, ich möchte überprüfen, ob ich eine leere Datenbank mit diesen Skripten neu erstellen kann.
Wie kann ich dies zuverlässig tun?
Eine Möglichkeit wäre die Verwendung von SHOW COLUMNS FROM mytable
(oder DESCRIBE mytable
), die in der Befehlszeile in tabellarischer Form wie folgt ausgegeben würde:
+---------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------------------+----------------+
| pk_guid | int(10) unsigned | NO | PRI | NULL | auto_increment |
| d_start | datetime | NO | MUL | 0000-00-00 00:00:00 | |
| d_end | datetime | NO | MUL | 0000-00-00 00:00:00 | |
+---------+------------------+------+-----+---------------------+----------------+
Erstellen Sie dann eine temporäre Tabelle und vergleichen Sie die Ergebnisse.
Das wäre in Ordnung, außer wenn der Live-Datenbank irgendwelche Spalten hinzugefügt wurden, dann sind die Ergebnisse möglicherweise nicht in der gleichen Zeilenreihenfolge.
Leider scheint es nicht möglich zu sein, die ORDER BY
con SHOW COLUMNS
.
Eine andere Möglichkeit wäre die Verwendung von SHOW CREATE TABLE
sondern auch Informationen wie zum Beispiel die AUTO_INCREMENT
Gegenwert, der mir egal ist.
Gibt es eine bessere Möglichkeit, dies zu tun?