【问题标题】:H2 Database not found error: 90146. H2 database is not created on startH2 数据库未找到错误:90146。启动时未创建 H2 数据库
【发布时间】:2019-10-06 03:50:06
【问题描述】:

刚刚从 spring 初始化程序创建了一个简单的 spring-boot 项目。我去添加一个本地 h2 db 进行测试,但无法登录。似乎它在启动时无法创建测试数据库,但无法弄清楚为什么会出现这种情况。

spring:
  h2:
    console:
      enabled: true
      path: /h2
  datasource:
    url: jdbc:h2:mem:testdb;
    username: sa
    password:
    driver-class-name: org.h2.Driver
    platform: h2
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        dialect=org:
          hibernate:
            dialect:
              H2Dialect: org.hibernate.dialect.H2Dialect

Database "mem:testdb" not found, and IFEXISTS=true, so we cant auto-create it [90146-199] 90146/90146

【问题讨论】:

  • 不确定是否重要,但您在数据源 url 中有一个分号

标签: spring-boot h2


【解决方案1】:

在早期版本的spring中,默认url是jdbc:h2:mem:testdb,testdb是默认创建的。从 2.3.0 开始,如果没有提到 url,它将自动生成数据库名称。自动生成的数据库名称可以在 spring 日志中找到。

【讨论】:

  • 对我来说,这是从顶部算起的第十二条消息(在控制台中)。消息如下:o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:36963133-9e0a-40bf-bac6-ed118afb3a97'我只是将位置复制并粘贴到控制台并连接。
  • 很棒的提示!我也在日志中找到了。
【解决方案2】:

我遇到了同样的错误,我发现这些很有帮助:

在 pom.xml 文件中添加 2019 之前的版本,如下所示:

<dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.193</version>
</dependency>

这修复了错误,但不是正确的方法。较新版本的 H2 数据库不会创建新数据库,因为它默认不存在,并且出于安全目的启用为 false。

更好的方法是添加对 url 的更改:

jdbc:h2:mem:testdb;IFEXISTS=FALSE;

希望对您有所帮助。我在application.properties 文件中进行了更改。

【讨论】:

  • 网址更改方法对我有用。非常感谢
  • 如何从 h2-console 访问?
  • 控制台在从 2.4.2 更改为 2.4.193 或将 url 更改为 jdbc:h2:mem:testdb 与 2.4.2 后工作正常,对我来说也工作正常。
【解决方案3】:

如卡顿所说。

只需去掉分号:

wrong:    jdbc:h2:mem:testdb;
correct:  jdbc:h2:mem:testdb

【讨论】:

    【解决方案4】:

    我有同样的问题,我将 Spring Boot 的版本更改为 2.1.3 并且它可以工作

    【讨论】:

      【解决方案5】:

      Windows 也有同样的问题。我只是将应用程序属性文件中的 spring.datasource.url 更改为 jdbc:h2:file:C:/data/sample 并运行项目。之后将 JDBC URL 设置为 jdbc:h2:file:C:/data/sample。看起来像图片 JDBC URL

      【讨论】:

        【解决方案6】:

        只需将其附加到您的 application.properties 文件中即可。

        spring.datasource.url=jdbc:h2:mem:testdb
        spring.data.jpa.repositories.bootstrap-mode=default
        

        【讨论】:

          【解决方案7】:

          如果您使用 spring boot 来使用 h2 DB,请确保您的 pom.xml 文件具有依赖项

          <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-data-jpa</artifactId>
          </dependency>
          <dependency>
               <groupId>com.h2database</groupId>
               <artifactId>h2</artifactId>
               <scope>runtime</scope>
          </dependency>
          

          您的application.yml 可以在应用程序在服务器。

          【讨论】:

            【解决方案8】:

            我只是将应用程序属性文件中的 spring.datasource.url 更改为 jdbc:h2:file:C:/data/test 并运行项目。

            你可以看到这个视频。 https://youtu.be/yYWPuM8k8K4

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-01-18
              • 2019-08-03
              • 1970-01-01
              • 2022-01-06
              • 1970-01-01
              • 1970-01-01
              • 2015-03-06
              • 2021-09-29
              相关资源
              最近更新 更多