【问题标题】:Spring Boot H2 database doesn't self-reset. Can't find existing data. Problems with liquibaseSpring Boot H2 数据库不会自重置。找不到现有数据。 liquibase 的问题
【发布时间】:2020-12-15 12:50:43
【问题描述】:

我有以下设置:

  1. 春季启动
  2. 嵌入式 H2 数据库
  3. 用于创建数据的 Liquibase 脚本

首先,我想在每次重新启动应用程序时从头开始。 我希望 liquibase 每次都从脚本中重新创建 H2 表。现在它没有,只是保留现有数据。如果我从 h2 控制台手动删除数据,除非我更新 changeSet id-s,否则它不会重新创建它们。

即便如此,现在,我还有一个名为 User 的现有表,其中包含数据。我可以从我的 h2 控制台看到它。但是突然间,当我使用 JdbcTemplate 查询时,它没有找到任何结果并且我无法再登录(它得到一个空结果)。

编辑:

我通过向我的 User.java 对象添加 setter 来修复数据查询。这解决了它(我希望我可以没有它们,但似乎没有)。

但我仍然希望创建我的 liquibase 的表每次都会重置,这样我就可以更改查询而不会出现错误。

【问题讨论】:

    标签: spring-boot h2 liquibase jdbctemplate


    【解决方案1】:

    在每次启动时获取新数据库的一种非常简单的方法是使用内存数据库而不是文件。

    只需更换 spring.datasource.url=jdbc:h2:~/company;MV_STORE=false 经过 spring.datasource.url=jdbc:h2:mem:company;MV_STORE=false 在您的 application.properties 中

    【讨论】:

    • 谢谢!我知道我遗漏了一些东西,因为我认为默认情况下它应该是非持久的。以下内容与问题无关,但我想知道 - 这种基本设置可以吗?登录和身份验证部分?我以前从来没有这样做过。
    猜你喜欢
    • 2020-12-14
    • 2019-01-26
    • 2020-01-01
    • 2019-09-06
    • 2018-08-23
    • 1970-01-01
    • 2021-08-16
    • 2014-01-20
    • 2020-11-07
    相关资源
    最近更新 更多