spring - 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 也不存在于左侧列中。
解决方案
我自己找到了修复:
做这个指令
spring.datasource.url: "jdbc:h2:mem:mydatabasename;DB_CLOSE_DELAY=-1;"
使新创建的模式和表出现。
此外,如果我删除
spring.flyway.schemas : mydatabasename // remove
然后从控制台查看时在“根”级别创建的表。
推荐阅读
- python - Numba:如何将 str 转换为 int?
- sql - 如何将存储过程的结果放在视图的新列中?
- javascript - node nftint.js (node:2540) UnhandledPromiseRejectionWarning: Error: Transaction has been reverted by the EVM:
- node.js - 用于后端的 Node.js
- javascript - [Vue 警告]:v-on 处理程序中的错误:“TypeError: Object(...)(...).httpsCallable(...).then 不是函数”
- java - Sonarlink 插件未在 Eclipse 中安装
- python - 仅在 pygame 中敌人活着时播放音效
- junit5 - 如何编写一个junit测试用例来测试一个rest客户端?
- javascript - JS 数据转换方法似乎不起作用
- node.js - 如何在电子、时尚、食品等产品的猫鼬模式设计中制作类别部分有助于构建此类模型