Spring Boot Application: как создать шему с помощью flyway при запуске? - PullRequest
0 голосов
/ 10 апреля 2020

Есть приложение весенней загрузки. Вот конфигурация:

spring
  flyway:
    locations: classpath:db/migration
    baseline-on-migrate: true
    schemas: ${app.db.schema}
    placeholders:
      schema: ${app.db.schema}
    init-sqls: CREATE SCHEMA IF NOT EXISTS ${app.db.schema}

И это не работает.

Мне нужно создать схему БД до того, как миграция будет выполняться миграцией.

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Flyway пытается прочитать сценарии миграции базы данных из папки classpath:db/migration по умолчанию.

Все сценарии миграции должны соответствовать определенному соглашению об именах - V<VERSION_NUMBER>__<NAME>.sql.

Создать новый файл с именем V1__Create_Tables.sql внутри src/main/resources/db/migration каталога и добавьте сценарий sql, например:

-- ----------------------------
-- Schema for helloservice
-- ----------------------------
CREATE SCHEMA IF NOT EXISTS helloworld;
-- ----------------------------
-- Table structure for user
-- ----------------------------
CREATE TABLE helloworld.users (
  id                  BIGSERIAL        PRIMARY KEY NOT NULL UNIQUE,
  username            VARCHAR(255)     UNIQUE NOT NULL,
  password            VARCHAR(255)     NOT NULL,
  first_name          VARCHAR(255),
  middle_name         VARCHAR(255),
  last_name           VARCHAR(255),
  email               VARCHAR(255),
  enabled             bool             NOT NULL DEFAULT true,
  account_locked      bool             NOT NULL,
  account_expired     bool             NOT NULL,
  credential_expired  bool             NOT NULL,
  created_on timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_on timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE helloworld.users IS 'User table';

Когда вы запустите приложение, flyway автоматически проверит текущую версию базы данных и применит любые ожидающие миграции. По умолчанию дополнительные свойства не требуются. Вы также можете создать схему в этом скрипте. Или flyway сделает это за вас, если вы укажете несуществующую схему.

Если вы используете спящий режим, проверьте это свойство:

spring.jpa.hibernate.ddl-auto=validate

Для получения дополнительной информации см. инструкции .

0 голосов
/ 13 апреля 2020

Имеется ссылка на документацию: https://flywaydb.org/documentation/commandline/migrate#schemas

Фактически FlyWay отвечает за создание схем, если они не существуют.

Вот пример в changelog- таблица истории:

enter image description here

...