На работе мы используем модифицированную версию DBIx :: Migration (она имеет некоторые ограничения, например, не более 10 миграций). Затем у вас есть базовая схема, которую вы выгрузили из базы данных, а когда номер версии слишком мал, вы обновляете базу данных, используя миграции из каталога схемы миграции.
Я также настоятельно рекомендую книгу Refactoring Database. Помимо прочего, он предоставит вам отличные методы для безопасного управления миграциями таким образом, что при необходимости отката вы не потеряете данные (например, когда вы отбрасываете столбец, по вашему не нужно).
Чтобы помочь с автоматическими графиками устаревания, которые он предлагает, я написал Devel :: Deprecate , чтобы вам не нужно было вспоминать, когда выполнять амортизацию. Ваш код будет громко жаловаться на вас (и только в тестировании, а не в производстве).
Важно : вы будете периодически обнаруживать, что с помощью этого метода вы применяете так много уровней миграции баз данных, что вам иногда потребуется «увеличить» минимальную базовую миграцию потому что это занимает слишком много времени, чтобы восстановить базу данных. Просто создайте новый дамп базы данных на нужном уровне миграции и удалите все миграции, которые меньше или равны этому уровню.
Обновление : перемотка вперед на несколько лет, и сегодня я рекомендую sqitch . Он разработан с нуля, чтобы справиться со случаем помещения базы данных под контроль версий без привязки к конкретному языку программирования или VCS.