Проблема с Liquibase во время тестирования интеграции с весенней загрузкой - PullRequest
0 голосов
/ 04 января 2019

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

   - changeSet:
        id: 2
        author: XXX
        changes:
        - sql:
            splitStatements: true
            sql: CREATE ROLE dba_user LOGIN PASSWORD 'dba_user';
            stripComments: true

Исключение составляет

Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE ROLE DBA_USER LOGIN[*] PASSWORD 'dba_user' "; SQL statement:
    CREATE ROLE dba_user LOGIN PASSWORD 'dba_user' [42000-196]

Почему это добавляет [*] или есть какая-то другая проблема? То же исключение я получаю при запуске changeset для создания представления.

Ответы [ 3 ]

0 голосов
/ 04 января 2019

Если у вас есть SQL-запросы, несовместимые с H2, вы можете использовать testcontainers для использования PostgreSQL с вашими интеграционными тестами.Он запускает докер-контейнеры под капот для ваших нужд базы данных в тестах, и вы можете запрашивать контейнерный PostgreSQL.

0 голосов
/ 04 января 2019
preConditions:
        - onFail: MARK_RAN
        - not:
          - dbms:
              type: h2

Я нашел способ пропустить этот скрипт для конкретной базы данных. Так что это не будет работать, если это h2.

0 голосов
/ 04 января 2019

Ваш тест выполняется для базы данных H2, которая не имеет функции CREATE ROLE.

Кстати, я не думаю, что это хорошая идея - создавать роли с помощью Liquibase.Liquibase предназначен для использования для переноса схемы / данных БД, а не для создания экземпляра БД (где также падает создание роли БД).Я бы предложил создать роль при создании экземпляра БД (не имеет значения, является ли он автоматическим или ручным).

...