2017-02-03 16 views
3

Я только начинаю использовать Liquibase, и мне интересно: почему это происходит, когда я запускаю ./mvnw compile liquibase:diff, сгенерированные смены, чтобы сначала удалить существующие индексы, а затем воссоздать их, если они уже существуют?Liquibase всегда генерирует набор изменений для создания/снижения индекса

Ex:

<changeSet author="me (generated)" id="1486157347995-13"> 
     <dropIndex indexName="my_idx" tableName="notification"/> 
     <createIndex indexName="my_idx" tableName="notification"> 
     <column name="index_col"/> 
     </createIndex> 
</changeSet> 

ответ

2

Вероятно, из "лени".

Это простой способ убедиться, что созданный индекс одинаков (не только имя, но и используемые столбцы), чем тот, что указан в справочной базе данных.

Он обрабатывает два Diff случая в одном:

  • недостающее имя индекса в целевой БД,
  • же имя индекса, но с другим определением.
+0

Отлично, спасибо вам за разъяснения. Если у вас есть время - еще один вопрос: как часто я должен генерировать новые изменения? Каждый раз, когда происходит обновление базы данных? Или я могу просто добавить небольшие изменения, такие как добавление новой последовательности или столбца в существующий журнал изменений? Это имеет значение? Благодаря! – Dayna

+0

Лично я генерирую diff каждый выпуск. Они упаковываются как результаты по двоичным файлам. Я считаю, что различие во время разработки менее полезно, поскольку Liquibase может создавать и обновлять вашу схему непосредственно на вашем dev db. –

+0

Ах, я вижу. Отлично, спасибо! – Dayna