Bei der Arbeit verwenden wir eine modifizierte Version von DBIx::Migration (es hat einige Einschränkungen, wie nicht mehr als 10 Migrationen). Dann haben Sie ein Kernschema, das Sie von Ihrer Datenbank ausgegeben haben, und wenn die Versionsnummer zu niedrig ist, aktualisieren Sie Ihre Datenbank mithilfe der Migrationen aus dem Migrationsschemaverzeichnis.
Ich empfehle auch das Database Refactoring Buch.Unter anderem gibt es Ihnen hervorragende Techniken zum Verwalten von Migrationen sicher in der Weise, dass Sie keine Daten verlieren, wenn Sie ein Rollback durchführen müssen (z. B. wenn Sie eine Spalte löschen, die Sie nicht benötigen) .
Um die automatischen Abschreibungszeitpläne zu unterstützen, habe ich vorgeschlagen, Devel::Deprecate zu schreiben, damit Sie sich nicht daran erinnern müssen, wann die Abwertungen durchgeführt werden sollen. Ihr Code wird sich lautstark für Sie beschweren (und nur im Test, nicht in der Produktion).
Wichtige: Sie werden regelmäßig feststellen, dass Sie so viele Datenbankmigration Ebenen mit dieser Technik anwenden möchten, dass Sie manchmal werden müssen „bump up“ Ihre minimale Basis Migration, weil es zu lange dauert, um wieder aufzubauen die Datenbank. Nehmen Sie einfach einen neuen Dump der Datenbank auf der gewünschten Migrationsebene und entfernen Sie alle Migrationen, die kleiner oder gleich dieser Ebene sind.
aktualisieren: Schneller Vorlauf ein paar Jahren und ich heute empfehlen sqitch. Es wurde von Grund auf entwickelt, um eine Datenbank unter Versionskontrolle zu stellen, ohne Sie an eine bestimmte Programmiersprache oder VCS zu binden.
Ab 4/4/12 scheint es immer noch nur SQLite zu unterstützen. –