Möchte man die ALTER Statements zweier Datenbank-Revisionen automatisch generieren lassen, bietet sich das Commandline Tool mysqldiff an. Damit kann man auf einfache Art und Weise die benötigten DDL-Statements zwischen Produktiv-Version und aktuellem Development-Snapshot erstellen.
Unter Ubuntu installiert man das in Perl geschriebene Programm am einfachsten via CPAN:
> sudo cpan cpan[1]> install MySQL::Diff
Nach der Installation führt man den Vergleich durch
> mysqldiff -u root -p PASS powerlab_latest_stable powerlab_dev
In meinem Beispiel möchte ich die Änderungen der Datenbank powerlab_latest_stable hin zu powerlab_dev bekommen.
Der Output sieht dabei wie folgt aus:
ALTER TABLE lab_event_tags ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; # was ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 ALTER TABLE lab_event_tags_mapping ENGINE=InnoDB DEFAULT CHARSET=utf8; # was ENGINE=InnoDB DEFAULT CHARSET=latin1 ALTER TABLE lab_person DROP COLUMN last_participation; # was varchar(30) DEFAULT NULL ALTER TABLE lab_person CHANGE COLUMN comment comment text; # was varchar(45) DEFAULT NULL ALTER TABLE lab_person ADD COLUMN is_deleted tinyint(1) DEFAULT NULL; ALTER TABLE lab_person ENGINE=InnoDB AUTO_INCREMENT=3113 DEFAULT CHARSET=utf8; # was ENGINE=InnoDB AUTO_INCREMENT=3112 DEFAULT CHARSET=utf8 ALTER TABLE lab_person_values ENGINE=InnoDB AUTO_INCREMENT=42424 DEFAULT CHARSET=utf8; # was ENGINE=InnoDB AUTO_INCREMENT=42390 DEFAULT CHARSET=utf8