H2找不到数据库错误:90146,启动时未创建H2数据库

kqlmhetl  于 2022-10-04  发布在  Spring
关注(0)|答案(9)|浏览(474)

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

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

643ylb08

643ylb081#

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

huus2vyu

huus2vyu2#

我也犯过同样的错误,我发现下面这些错误很有帮助:

将2019年前版本添加到pom.xml文件,如下所示:

<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文件中进行了更改。

7qhs6swi

7qhs6swi3#

只需将此文件附加到application.properties文件。

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

unftdfkk4#

就像卡顿说的那样。

只需删除分号:

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

jc3wubiy5#

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

wf82jlnq

wf82jlnq6#

我也遇到了同样的问题,我把Spring Boot的版本改为2.1.3,它就能工作了

flmtquvp

flmtquvp7#

如果您为了使用h2DB而使用Spring Boot,请确保您对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使您可以通过URI/h2-console访问h2 DB,并使用用户名“sa”连接到名为“testdb”的数据库。

jpfvwuh4

jpfvwuh48#

错误:spring.datource.url=jdbc:h2:Mem:testdb

下面的解决方案对我很管用

正确:spring.datource.url=jdbc:h2:file:~/test;

ws51t4hk

ws51t4hk9#

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

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

相关问题