2016-05-24 3 views
0

, мы используем Liquibase для нашего развертывания БД. В настоящее время мы делаем рефакторинг. Существует старый набор изменений, который запускает скрипт sql. Это было выполнено в прошлом. Теперь этот sql-скрипт (или оператор в нем) устарел, и я хотел бы удалить его из нашей системы VCS. Я сделал это и попытался развернуть снова, но я получаю исключение, заявляя, что sql-файл не существует, хотя мой набор изменений имеет runAlways = «false» и runOnChange = «false».Liquibase: Удаление файла Sql, используемого в наборе изменений

Означает ли это, что я всегда должен всегда хранить конкретный sql-скрипт в своем CVS, хотя он устарел?

+0

Вы удалили устаревший набор изменений полностью или только один файл, составляющий его? В наших миграциях ликбазы мы постоянно бросаем старые ревизии и это работает без проблем. –

ответ

0

Согласно тому, как контрольная сумма работает на Liquibase, вы не можете ее удалить. Технически вы запускаете этот набор изменений один раз, и что-то произошло в БД, затем Liquibase создала контрольную сумму для вашего файла. Теперь, если вы измените часть его, Liquibase скажет, что ваш файл обновлен, и вы не можете этого сделать.

Итак, ваш файл является частью истории сборки вашего приложения, даже если он больше не полезен, и вы не можете избавиться от него.

Если вы не в производственном корпусе, одно решение может создать дамп из вашей текущей базы данных в качестве init.sql и начать с этого.

Надеюсь, это вам поможет.

+0

Спасибо за ответ. Я боялся этого. Я просто подумал, что у кого-то еще может быть идея. – Elena

+0

Вы должны думать, что главная задача Liquibase - иметь историю действий в базе данных и не допускать регрессии или нестабильности, поэтому даже если теперь файл не имеет смысла, технически в один прекрасный день он сделал ... :) – cralfaro