Интеграция Flyway с Spring Boot не выполняет сценарии миграции для встроенной базы данных H2

Я пытаюсь сделать демонстрацию миграции на встроенной базе данных H2 в приложении Spring Boot с использованием Flyway.

application.properties

logging.level.org.org.springframework=DEBUG
server.port=8181
spring.h2.console.enabled=true
spring.h2.console.path=/h2
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
spring.flyway.baseline-on-migrate=true
spring.jpa.hibernate.ddl-auto=none

сценарий миграции (V2__create_shipwreck.sql) в каталоге db /igration

CREATE TABLE SHIPWRECK(ID INT AUTO_INCREMENT,
    NAME VARCHAR(255),
    DESCRIPTION VARCHAR(2000),
    CONDITION VARCHAR(255),
    DEPTH INT,
    LATITUDE DOUBLE,
    LANGITUDE DOUBLE,
    YEARS_DISCOERED INT);

консольный журнал

  

INFO 7284 --- [main] o.f.c.internal.database.DatabaseFactory:   База данных: jdbc: h2: mem: testdb (H2 1.4)

     

INFO 7284 --- [main] o.f.core.internal.command.DbValidate:   Успешно подтверждена 1 миграция (время выполнения 00: 00.031 с)

     

INFO 7284 --- [main] o.f.c.i.s.JdbcTableSchemaHistory: создание схемы   Таблица истории: «PUBLIC». «Flyway_schema_history»

     

INFO 7284 --- [main] o.f.core.internal.command.DbMigrate: текущий   версия схемы "PUBLIC": <<Пустая схема>>

     

INFO 7284 --- [main] o.f.core.internal.command.DbMigrate: Миграция   схема "PUBLIC" до версии 2 - создать кораблекрушение

     

INFO 7284 --- [main] o.f.core.internal.command.DbMigrate:   Успешно применена 1 миграция к схеме "PUBLIC" (время выполнения   00: 00.098s)

     

ИНФО 7284 --- [main] j.LocalContainerEntityManagerFactoryBean:   Сборка контейнера JPA EntityManagerFactory для модуля сохранения   'По умолчанию'

     

ИНФОРМАЦИЯ 7284 --- [main] o.hibernate.jpa.internal.util.LogHelper:   HHH000204: обработка PersistenceUnitInfo [имя: по умолчанию ...]

     

main] org.hibernate.Version: HHH000412: Hibernate   Core {5.2.14.Final}

     

main] org.hibernate.cfg.Environment: HHH000206:   hibernate.properties не найден

     

main] o.hibernate.annotations.common.Version: HCANN000001:   Hibernate Commons Annotations {5.0.1.Final}

     

main] org.hibernate.dialect.Dialect: HHH000400: Использование   диалект: org.hibernate.dialect.H2Dialect

     

main] j.LocalContainerEntityManagerFactoryBean: инициализированный JPA   EntityManagerFactory для персистентного модуля 'default'

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.boot</groupId>
    <artifactId>das-boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>das-boot</name>
    <url>http://maven.apache.org</url>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-core</artifactId>
        <version>5.0.7</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.0.0.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

Пользовательский интерфейс таблиц базы данных H2

 таблицы базы данных

После запуска приложения Spring Boot таблица не была создана, в чем здесь проблема?

4 голоса | спросил Elsayed 7 Maypm18 2018, 16:37:20

2 ответа


0
Исходя из вашего описания (Flyway выполняется правильно, но впоследствии никаких изменений схемы не наблюдается), это звучит так, как будто Spring Boot не сохраняет изменения H2.Вы можете попытаться добавить ---- +: = 0 =: + ---- к своему ---- +: = 1 =: + ----, чтобы конфигурация JPA не отменяла изменения вашей схемы после Flywayмиграция, согласно этому вопросу .
ответил N. Labrahmi 8 Maypm18 2018, 14:37:29
0
У меня была та же проблема, она была решена после внесения изменений в application.properties как datasource.url в файл вместо memвозможность создать таблицу с подробной информацией Правильно: ---- +: = 0 =: + ----application.propertiespom.xmlТаблица кораблекрушений была создана и сохранена в h2 db
ответил Sanish Ramankutty 26 J000000Thursday18 2018, 00:38:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132