Я новичок в Liquibase, и я играл с командой diff. Он работает отлично, но недавно обнаружил это, и я не могу понять, почему он не работает в этом конкретном контексте.
поэтому основная проблема в том, что я хочу сравнить две базы данных, но без индексов. они динамически генерируются на первичных ключах и получают разные имена, но фактически эквивалентны. Liquibase не понимает, поэтому я хочу запустить diff без индексов.
поэтому я добавляю это в свой pom.xml:
<diffTypes>tables, views, columns, primaryKeys, foreignKeys, uniqueconstraints</diffTypes>
он работает, как ожидалось, Liquibase не сравнивает индексы.
на следующем шаге я хочу сгенерировать diff как журнал изменений, поэтому я добавляю файл diffChangeLog
<diffTypes>tables, views, columns, primaryKeys, foreignKeys, uniqueconstraints</diffTypes>
<diffChangeLogFile>src/main/diffs/diff_test.xml</diffChangeLogFile>
при запуске Liquibase: diff происходит сбой:
[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.4.1:diff (default-cli) on project liquibase_artifactID: Error setting up or running Liquibase: liquibase.command.CommandExecutionException: liquibase.exception.UnexpectedLiquibaseException: Could not resolve MissingObjectChangeGenerator dependencies due to dependency cycle. Dependencies:
[ERROR] [] -> Catalog -> []
[ERROR] [] -> Schema -> []
[ERROR] [Index] -> ForeignKey -> []
[ERROR] [] -> UniqueConstraint -> []
[ERROR] [] -> Column -> []
[ERROR] [] -> Table -> []
[ERROR] [] -> PrimaryKey -> []
[ERROR] [] -> View -> []
[ERROR] -> [Help 1]
Почему ликвибаза действует так? Является ли "незаконным" создание diffChangeLog без индексов?
При включении индексов в diffTypes он работает, но сгенерированный журнал изменений нельзя использовать, потому что Liquibase хочет изменить индексы с помощью createIndex и dropIndex. Но эти операторы не являются исполняемыми (он не может отбросить индекс по первичным ключам и не может создать индекс, если он уже существует).
Есть идеи, как создать полезный журнал изменений без индексов? Или я просто что-то упустил?
difftypes
. В нем говорится, чтоdifftypes
работает только с командойgenerateChangeLog
, а не с командамиdiff
илиdiffChangeLog
. Я не знаю причины этого. - person Jens   schedule 25.08.2015