Почему мое предложение liquibasemodifySQL не срабатывает?

Я пытаюсь определить схему своей СУБД с помощью liquibase (в проекте spring-boot ). Соответствующей частью этого проекта является хранилище JSON, которое я пытаюсь настроить.

Даже я знаю, что большинство реляционных СУБД не могут правильно обрабатывать JSON или только начинают (на май 2016 года), я хочу иметь своего рода схему, независимую от поставщика. Итак, я установил blob (или что-то еще, совет будет признателен) в качестве типа данных по умолчанию для любой СУБД, и я специализировал его для тех, кто может иметь дело с: знаменитый JSONB для класса postgresql или как минимум JSON для h2 и mysql.

Поскольку я использую spring-boot, У меня не так много конфига (на самом деле нет ;))

Кажется, что предложение модификации SQL не срабатывает. Я использую следующий набор изменений.

Набор изменений YAML Liquibase

databaseChangeLog:
  - changeSet:
      id: 1
      author: jrevy
      changes:
        - createTable:
            tableName: recipe
            columns:
              - column:
                  name: id
                  type: uuid
                  constraints:
                    primaryKey: true
                    nullable: false
              - column:
                  name: name
                  type: varchar(255)
                  constraints:
                    nullable: false
              - column:
                  name: data
                  type: blob
                  constraints:
                    nullable: false
      modifySql:
        - replace:
            dbms: postgresql
            replace: blob
            with: jsonb
        - replace:
            dbms: h2,mysql
            replace: blob
            with: json  

Результат

INFO 24/05/16 14:56: liquibase: Successfully acquired change log lock
INFO 24/05/16 14:56: liquibase: Creating database history table with name: public.databasechangelog
INFO 24/05/16 14:56: liquibase: Reading from public.databasechangelog
INFO 24/05/16 14:56: liquibase: classpath:/db/changelog/db.changelog-master.yaml: classpath:/db/changelog/db.changelog-master.yaml::1::jrevy: Table recipe created
INFO 24/05/16 14:56: liquibase: classpath:/db/changelog/db.changelog-master.yaml: classpath:/db/changelog/db.changelog-master.yaml::1::jrevy: ChangeSet classpath:/db/changelog/db.changelog-master.yaml::1::jrevy ran successfully in 46ms
INFO 24/05/16 14:56: liquibase: Successfully released change log lock
[...]
INFO 67628 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate Core {4.3.11.Final}
2016-05-24 14:56:33.765  INFO 67628 --- [           main] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
2016-05-24 14:56:33.765  INFO 67628 --- [           main] org.hibernate.cfg.Environment            : HHH000021: Bytecode provider name : javassist
2016-05-24 14:56:34.030  INFO 67628 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {4.0.5.Final}
2016-05-24 14:56:34.280  INFO 67628 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL9Dialect

-->

-- Column: data

-- ALTER TABLE recipe DROP COLUMN data;

ALTER TABLE recipe  ADD COLUMN data bytea;
ALTER TABLE recipe ALTER COLUMN data SET NOT NULL;

Тип данных должен быть jsonb, а не bytea (это работает вполне хорошо, если я использую jsbon как тип данных по умолчанию, но только для pgSQL).

Вопрос

  • Как я могу узнать, обнаружено ли/запущено ли предложение модификацииSQL?
  • Вы знаете, почему это не работает, как ожидалось?

person Jean-Rémy Revy    schedule 25.05.2016    source источник


Ответы (1)


Удалить — перед заменой (https://github.com/liquibase/liquibase/blob/e0badd697d82a87ba868b41e68b659cf8c8e68e8/liquibase-integration-tests/src/test/resources/changelogs/yaml/rollback.tests.changelog.yaml) ?

Попробуйте изменить Sql без dbms, чтобы увидеть, срабатывает ли он. И проверьте с помощью строки cmd liquibase, чтобы исключить ошибку весенней загрузки.

person Cyril Beslay    schedule 25.05.2016