использование жидкости на базе существующей схемы - PullRequest
9 голосов
/ 02 августа 2011

Я читал о том, как вы можете сгенерировать changelog.xml из существующей схемы. Это нормально, но у меня есть существующие системы, которые я не хочу касаться, кроме как для внесения новых изменений. У меня также есть совершенно новые системы, которые требуют применения всех изменений.

Итак, я хочу, чтобы liquibase выполнял миграцию только из changeset X при работе в существующей системе. То есть DB этой системы находится на ревизии X-1 (но нет таблиц sys liquibase), и я не хочу применять какие-либо предыдущие миграции.

Большое спасибо, Пат

Ответы [ 2 ]

14 голосов
/ 24 октября 2011

Я бы порекомендовал немного другой подход, как это прокомментировано в этой ветке форума Liquibase

  1. создать журнал изменений из существующей схемы. CLI liquibase может сделать это для вас. Обычно я беру полученный XML-код и немного сглаживаю его (группирую связанные изменения в единые журналы изменений, выполняю очистки для конкретного поставщика и т. Д.), Но Liquibase выполняет большую часть работы.

  2. запустить этот журнал изменений для существующей базы данных (команда changelogSync), но пометить его только как примененный (без фактического изменения схемы).

  3. использовать жидкостьбазу для применения новых изменений с этого момента.

3 голосов
/ 02 августа 2011

Я думаю, что проще всего было бы сначала выполнить первоначальную настройку для пустой базы данных и экспортировать запись (записи), которую liquibase вставляет в таблицу DATABASECHANGELOG. Затем я экспортирую эти записи и вставляю их вручную в одну из целевых баз данных в их таблицу DATABASECHANGELOG, чтобы liquibase не выполнял там «изменения» снова.

Конечно, я бы проверил все это с помощью тестовых дампов на тестовой машине ...:)

...