Liquibase: как экспортировать изменения с момента последнего импорта?

Я использую Liquibase 2.0.5. У меня есть следующий процесс:

  1. Экспортируйте изменения Liquibase в файл XML.
  2. Войдите в базу данных и запустите какую-нибудь команду БД (например, ALTER TABLE ...)
  3. Экспортируйте изменения, сделанные на шаге 2, как набор изменений Liquibase.

Мой вопрос, как мне сделать шаг 3? Я использую следующий скрипт для выполнения шага 1...

/opt/liquibase/liquibase --driver=com.mysql.jdbc.Driver \
  --classpath=~/.m2/repository//mysql/mysql-connector-java/5.1.15/mysql-connector-java-5.1.15.jar \
  --changeLogFile=~/db.changelog.xml \
  --url="jdbc:mysql://localhost:3306/db" \
  --username=user \
  --password=pass \
  generateChangeLog

person Dave    schedule 25.02.2013    source источник


Ответы (1)


Вы вообще не должны делать "ручные" операторы ALTER TABLE. После того, как вы используете Liquibase, все изменения схемы должны проходить через нее. Выполнение инструкций ALTER вручную полностью противоречит цели Liquibase.

Если вы действительно не можете избежать обхода Liquibase, используйте команды diff или diffChangeLog для просмотра дельты (http://www.liquibase.org/manual/command_line)

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

person a_horse_with_no_name    schedule 25.02.2013
comment
Я не уверен, что вы говорите. Допустим, моя схема и структуры таблиц уже созданы, и я хочу добавить в таблицу новый столбец. Учитывая, что я использую Liquibase, как правильно это сделать, если выполнение SQL-оператора ALTER TABLE исключено. - person Dave; 25.02.2013
comment
Чтобы добавить новый столбец, вы создаете новый набор изменений (в своем журнале изменений) с помощью команды addColumn. Liquibase – это инструмент для управления и переносом ваших схем. Пожалуйста, прочитайте учебник и руководство. - person a_horse_with_no_name; 25.02.2013