gpt4 book ai didi

java - Flyway 与 spring boot 的集成不会在嵌入式 H2 数据库上执行迁移脚本

转载 作者:搜寻专家 更新时间:2023-10-31 19:52:03 25 4
gpt4 key购买 nike

我正在尝试使用 Flyway 在 Spring Boot 应用程序的嵌入式 H2 数据库上进行迁移演示。

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

db/migration 下的迁移脚本(V2__create_shipwreck.sql)

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: Database: jdbc:h2:mem:testdb (H2 1.4)

INFO 7284 --- [main] o.f.core.internal.command.DbValidate: Successfully validated 1 migration (execution time 00:00.031s)

INFO 7284 --- [main] o.f.c.i.s.JdbcTableSchemaHistory: Creating Schema History table: "PUBLIC"."flyway_schema_history"

INFO 7284 --- [main] o.f.core.internal.command.DbMigrate: Current version of schema "PUBLIC": << Empty Schema >>

INFO 7284 --- [main] o.f.core.internal.command.DbMigrate: Migrating schema "PUBLIC" to version 2 - create shipwreck

INFO 7284 --- [main] o.f.core.internal.command.DbMigrate : Successfully applied 1 migration to schema "PUBLIC" (execution time 00:00.098s)

INFO 7284 --- [main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'

INFO 7284 --- [main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default...]

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

main] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found

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

main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect

main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit '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 数据库表 UI

database tables

启动Spring Boot应用后,表还没有创建,请问这是什么问题?

最佳答案

我有同样的问题,在对 application.properties 进行更改后解决了datasource.url 到 file 而不是 mem

能够创建包含详细信息的表格正确的:spring.datasource.url=jdbc:h2:file:~/dasboot

应用程序属性

logging.level.org.org.springframework=DEBUG
server.port=8080

spring.h2.console.enabled=true
spring.h2.console.path=/h2

spring.datasource.url=jdbc:h2:file:~/dasboot
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

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>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>

<name>das-boot</name>
<url>http://maven.apache.org</url>

<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>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>


</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

shipwreck table was created and persisted in h2 db

关于java - Flyway 与 spring boot 的集成不会在嵌入式 H2 数据库上执行迁移脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50215620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com