Миграция базы данных Liquibase с пустой и уже существующей базой данных - PullRequest
2 голосов
/ 07 марта 2012

Я занимаюсь разработкой веб-приложения на Java с использованием Spring, JPA / Hibernate и MS SQL Server / PostgreSQL.Чтобы упростить миграцию базы данных для установленных систем, я хочу интегрировать Liquibase для автоматического обновления при запуске приложения.В настоящее время я всегда создаю сценарии обновления, которые я должен выполнять вручную в правильном порядке.

Я проверил интеграцию со Spring и очень быстро заработал.Мета-таблицы Liquibase создаются с первым набором изменений, и он выполняет изменения.Проблема в том, что уже существуют некоторые установленные системы, но в будущем могут появиться и другие установки.

Возможно ли с помощью Liquibase определить, пуста ли база данных, и автоматически выполнить DDL в только что установленной системе?В противном случае мне пришлось бы вручную выполнить DDL и затем запустить приложение.

Я хочу, чтобы база данных автоматически инициализировалась, когда она была пустой, или обновлялась, если она уже существует.Есть ли возможность сделать это с помощью Liquibase или есть какие-то хитрости, чтобы заставить это работать?

Ответы [ 2 ]

3 голосов
/ 10 марта 2012

Когда вы начинаете использовать liquibase в существующей системе с существующей схемой, в основном есть два варианта:

  1. Предполагается, что все базы данных начнутся с известной начальной точки.Сделайте все, что вам нужно, за пределами liquibase, чтобы получить их к этому моменту (восстановление из моментального снимка, сборка вручную и т.Вы захотите запускать это только в новых базах данных, поэтому вы можете управлять этим либо с помощью специального интеграционного вызова пружины liquibase, либо свернув сгенерированный changeLog до одного changeSet с блоком <preConditions onFail="MARK_RAN"><not><tableExists tableName="table name here"/></not></preConditions> в начале.

0 голосов
/ 07 марта 2012

Возможно ли с помощью Liquibase обнаружить, что база данных пуста, и автоматически выполнить DDL в только что установленной системе?

Ну, как вы упомянули,

Мета-таблицы Liquibase создаются с первым набором изменений, и он выполняет изменения.

, поэтому, если ваши операторы DDL находятся среди наборов изменений (возможно, первый набор изменений), тогда все должно быть хорошо.

Есть ли возможность сделать это с помощью Liquibase или есть какие-то хитрости, чтобы заставить это работать?

Да, это должно быть возможно без каких-либо хитростей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...