Używam Liquibase 3.3.5 do aktualizacji mojej bazy danych. Posiadanie kontekstów jest dobrym sposobem na wykonanie tylko określonych części dziennika zmian. Ale nie rozumiem, dlaczego WSZYSTKIE zestawy zmian są wykonywane, gdy nie podano kontekstu aktualizacji. Rozważmy następujący przykład:Dlaczego wszystkie konteksty są wykonywane, gdy nie podano w aktualizacji?
- changeset A: context = testu
- changeset B: brak kontekstu
- changeset C: context = prod
Więc
- wykonywania aktualizacji z context = test, wykona zestaw zmian A + B.
- wykonanie aktualizacji z context = prod, wykona zestaw zmian B + C.
- wykonanie aktualizacji bez kontekstu, wykona zestaw zmian A + B + C.
Dla mnie to w ogóle nie ma sensu :).
Spodziewam się, że tylko zestaw zmian B zostanie wykonany, ponieważ nie definiuje określonego kontekstu.
W przykładzie kontekstów Liquibase: http://www.liquibase.org/documentation/contexts.html ("Korzystanie z kontekstów dla danych testowych") mówią, że należy oznaczyć zestawy zmian do testowania za pomocą "testu" i wykonać je z podaniem kontekstu "test" do zastosowania danych testowych. W porządku - sensu. Ale
"Kiedy przychodzi czas na migrację produkcyjnej bazy danych, nie dołączaj kontekstu" test ", a dane testowe nie będą dołączane. "
Tak więc, jeśli nie będę określenie«test»kontekst podczas wykonywania aktualizacji produkcyjną, to byłoby wykonać«test»Zestawienia zmian, a także, ponieważ ja nie określił kontekst w ogóle.
ponownie, chciałbym się spodziewać, że pomijając testu na wykonanie aktualizacji, by wykonać tylko regularnego Zestawienia zmian bez się Zestawienia zmian testowe.
Albo ja czegoś brakuje tutaj :)?
Ok, dzięki za wyjaśnienie :)! Zmiana, która zepsułaby kompatybilność wsteczną, to na pewno. Ale jako nowy użytkownik Liquibase, nie wydawało mi się to "naturalne", stąd pytanie. Jeśli zawsze używasz kontekstu, wydaje się, że jest tak, aby zrobić to w ten sposób. Czy są jakieś plany zmiany tego zachowania? – javg
Jak już zauważyłeś, zmiana go przerwie kompatybilność wsteczną, więc jest bardzo mało prawdopodobne, aby się zmieniła. Byłoby korzystne ulepszenie dokumentacji. Jeśli jesteś zainteresowany, cała dokumentacja jest w GitHub, a zespół z zadowoleniem przyjmuje prośby o odciągnięcie! https://github.com/liquibase/liquibase.github.com ps - jeśli moja odpowiedź była pomocna, proszę "zaakceptuj" jako poprawną odpowiedź. – SteveDonie