Добрый день.
Проблема довольно странная, в чем именно мне на текущий момент не ясно.
Опишу диспозицию:
- Композитный проект состоит из основного проекта и подпроекта.
- Датастор для основного проекта уже создан, база создана (hsqldb).
- Генерируем changelog для подпроекта.
- Для датастора основного проекта выполняем Recreate. База пересоздана, в ней присутствует таблица из подпроекта. В DATABASECHANGELOG присутствует запись.
- Запускаем приложение
Caused by: liquibase.exception.MigrationFailedException: Migration failed for change set com/borets/addon/att/liquibase/changelog/010-init-attachment.xml::1::att:
Reason: liquibase.exception.DatabaseException: object name already exists: ATT_ATTACHMENT in statement [CREATE TABLE PUBLIC.ATT_ATTACHMENT (ID UUID NOT NULL, VERSION INT NOT NULL, CREATED_BY VARCHAR(255), CREATED_DATE TIMESTAMP, LAST_MODIFIED_BY VARCHAR(255), LAST_MODIFIED_DATE TIMESTAMP, DELETED_BY VARCHAR(255), DELETED_DATE TIMESTAMP, ENTITY_REFERENCE VARCHAR(255), FILE_ VARCHAR(1024), EXTENSION VARCHAR(20), NAME VARCHAR(500), CONSTRAINT PK_ATT_ATTACHMENT PRIMARY KEY (ID))] [Failed SQL: (-5504) CREATE TABLE PUBLIC.ATT_ATTACHMENT (ID UUID NOT NULL, VERSION INT NOT NULL, CREATED_BY VARCHAR(255), CREATED_DATE TIMESTAMP, LAST_MODIFIED_BY VARCHAR(255), LAST_MODIFIED_DATE TIMESTAMP, DELETED_BY VARCHAR(255), DELETED_DATE TIMESTAMP, ENTITY_REFERENCE VARCHAR(255), FILE_ VARCHAR(1024), EXTENSION VARCHAR(20), NAME VARCHAR(500), CONSTRAINT PK_ATT_ATTACHMENT PRIMARY KEY (ID))]
> at liquibase.changelog.ChangeSet.execute(ChangeSet.java:696) ~[liquibase-core-4.11.0.jar:na]
> at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:56) ~[liquibase-core-4.11.0.jar:na]
> at liquibase.changelog.ChangeLogIterator$2.lambda$null$0(ChangeLogIterator.java:113) ~[liquibase-core-4.11.0.jar:na]
> at liquibase.Scope.lambda$child$0(Scope.java:180) ~[liquibase-core-4.11.0.jar:na]
> at liquibase.Scope.child(Scope.java:189) ~[liquibase-core-4.11.0.jar:na]
> at liquibase.Scope.child(Scope.java:179) ~[liquibase-core-4.11.0.jar:na]
> at liquibase.Scope.child(Scope.java:158) ~[liquibase-core-4.11.0.jar:na]
> at liquibase.changelog.ChangeLogIterator$2.lambda$run$1(ChangeLogIterator.java:112) ~[liquibase-core-4.11.0.jar:na]
> at liquibase.Scope.lambda$child$0(Scope.java:180) ~[liquibase-core-4.11.0.jar:na]
Если же удалить базу основного приложения и запустить приложение, то все запускается без проблем (база будет пересоздана в рантайме).
UPD1. Уже после написания поста увидел, что в случае выполнения Recreate для датастора (первый случай), база создается на уровне композитного проекта, а во втором случае база создается база создается на уровне основного проекта. Возможно это является ошибкой в конфигурации проекта.
UPD2. Не смотря на то, что url датастора jdbc:hsqldb:file:.jmix/hsqldb/db
(основного проекта) при выполнении Recreate база фактически создается в jdbc:hsqldb:file:../db-all/.jmix/hsqldb/db