【问题标题】:Spring Boot 2 + Flyway + H2: can't see generated migration in H2 ConsoleSpring Boot 2 + Flyway + H2:在 H2 控制台中看不到生成的迁移
【发布时间】:2020-01-09 05:27:12
【问题描述】:

我在 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 也不存在于左侧列中。

【问题讨论】:

  • 你的flyway迁移脚本是什么?实际的 SQL 文件?
  • @LipingHuang 会更新问题,但它是一个基本的创建表。

标签: spring spring-boot spring-data h2 flyway


【解决方案1】:

我自己找到了解决方法:

做这个指令

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

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

另外,如果我删除

spring.flyway.schemas : mydatabasename // remove

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

【讨论】:

    猜你喜欢
    • 2016-05-11
    • 2023-02-08
    • 2019-07-27
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2022-01-18
    • 2018-04-11
    相关资源
    最近更新 更多