首页 > 解决方案 > Spring Boot 2 + Flyway + H2:在 H2 控制台中看不到生成的迁移

问题描述

我在我的 Spring Boot 2 项目中启用了 h2 和 flyway。

我有如下属性:

spring.datasource.url: jdbc:h2:mem:mydatabasename
spring.datasource.driverClassName: org.h2.Driver
spring.datasource.username: sa
spring.datasource.password:
spring.jpa.database-platform: org.hibernate.dialect.H2Dialect
spring.h2.console.enabled: true
spring.h2.console.path: /h2
spring.flyway.url: ${spring.datasource.url}
spring.flyway.schemas : mydatabasename
spring.flyway.user: ${spring.datasource.username}
spring.flyway.password : ${spring.datasource.password}

db.migration 文件是常用的(resources/db/migration/V1__Initial_version.sql)

CREATE TABLE PRODUCT
(
    ID VARCHAR(200) PRIMARY KEY,
    PRODUCTID VARCHAR(30)
);

它有效:

 o.f.c.internal.license.VersionPrinter    : Flyway Community Edition 5.2.4 by Boxfuse
 o.f.c.internal.database.DatabaseFactory  : Database: jdbc:h2:mem:mydatabasename (H2 1.4)
 o.f.c.internal.database.base.Database    : Flyway upgrade recommended: H2 1.4.199 is newer than this version of Flyway and support has not been tested.
 o.f.core.internal.command.DbSchemas      : Creating schema "mydatabasename" ...
 o.f.c.i.s.JdbcTableSchemaHistory         : Creating Schema History table: "mydatabasename"."flyway_schema_history"
 o.f.core.internal.command.DbMigrate      : Current version of schema "mydatabasename": null
 o.f.core.internal.command.DbMigrate      : Migrating schema "mydatabasename" to version 1 - Initial version
 o.f.core.internal.command.DbMigrate      : Successfully applied 1 migration to schema "mydatabasename" (execution time 00:00.021s)

但是,当我登录到 H2 控制台时(我使用完全相同的 url,jdbc:h2:mem:mydatabasename)我确实登录了,但我什么也没看到,只有 INFORMATION_SCHEMA。此外,“显示架构”显示 INFORMATION_SCHEMA 和 PUBLIC,而 PUBLIC 也不存在于左侧列中。

标签: springspring-bootspring-datah2flyway

解决方案


我自己找到了修复:

做这个指令

spring.datasource.url: "jdbc:h2:mem:mydatabasename;DB_CLOSE_DELAY=-1;"

使新创建的模式和表出现。

此外,如果我删除

spring.flyway.schemas : mydatabasename // remove

然后从控制台查看时在“根”级别创建的表。


推荐阅读