Проезд: обнаружены непустые схемы "общедоступные" без таблицы истории схем! Использовать baseline () - в пустой базе данных

Я пытаюсь настроить проезд с помощью kotlin Spring boot, jpa и postgreSQL. Мои зависимости Gradle:

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-data-jpa')
    implementation('org.springframework.boot:spring-boot-starter-web')
    implementation('com.fasterxml.jackson.module:jackson-module-kotlin')
    implementation('org.flywaydb:flyway-core')
    implementation('com.google.code.gson:gson')
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    runtimeOnly('org.postgresql:postgresql')
    testImplementation('org.springframework.boot:spring-boot-starter-test')
}

Мой файл application.properties:

spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.url=jdbc:postgresql://${JDBC_DATABASE_URL}/jpaTestDatabase
spring.datasource.username=${JDBC_DATABASE_USERNAME}
spring.datasource.password=${JDBC_DATABASE_PASSWORD}

flyway.baseline-on-migrate=true
flyway.locations=classpath:src/main/kotlin/db/migration

spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=validate
spring.session.store-type=none

Создание таблиц и записей с использованием jpa и спящего режима работает должным образом. Однако пример миграции в пустой базе данных приводит к:

org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: 
Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: 
Found non-empty schema(s) "public" without schema history table! Use baseline() or set baselineOnMigrate to true to initialize the schema history table.

моя структура каталогов - это структура по умолчанию, созданная spring initializr, и мои миграции находятся в: demo/src/main/kotlin/db/migration

У меня есть только одна миграция, которая является котлинизированной версией примера миграции, найденной здесь, которую я адаптировал, чтобы выглядеть так:

class V1__Sample : BaseJavaMigration() {
  override fun migrate(context: Context?) {
    val statement = context?.connection?.prepareStatement(
      """
        CREATE TABLE article (
          id bigserial primary key,
          name varchar(20) NOT NULL,
          desc text NOT NULL
        );
      """
    )
    statement.use { it?.execute() }
  }
}

Что мне здесь не хватает? Почему Flyway продолжает жаловаться на то, что обнаруживает непустые схемы "общедоступными" без таблицы истории схем, когда база данных полностью пуста (чистый образ докера)?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
26
0
35 083
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Предполагая, что вы используете Spring-boot версии 2.

В весенней загрузке 2 используется префикс spring.flyway, поэтому попробуйте добавить префикс spring, как показано ниже.

spring.flyway.baseline-on-migrate = true

ИЛИ

spring.flyway.baselineOnMigrate = true

+1. Это также можно сделать с помощью переменных среды FLYWAY_BASELINE_ON_MIGRATE=true. См. flywaydb.org/documentation/configuration/parameters/….

Aamir 24.08.2021 18:18

может быть можно попробовать mvn flyway:clean && mvn flyway:migrate

Другие вопросы по теме