H2无法在启动时创建数据库

时间:2019-05-19 16:15:48

标签: hibernate spring-boot h2

只需从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

9 个答案:

答案 0 :(得分:6)

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

enter image description here

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

如Stuck所说。

只需删除分号:

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

答案 4 :(得分:0)

我也有同样的问题。在打http://localhost:8080/h2-console时获得H2数​​据库控制台但无法连接时,它显示“找不到数据库“ C:/ ******* / test”,并且IFEXISTS = true,因此我们无法自动创建它[90146-199]”。看到以下错误: Error Snapshot

如上所述,尝试使用JDBC Url jdbc:h2:mem:testdb,但运气不好。

任何建议都会有所帮助。

答案 5 :(得分:0)

我遇到了同样的问题,我将Spring Boot的版本更改为2.1.3,并且可以正常工作

答案 6 :(得分:0)

我有同样的错误,我发现这些对您有帮助:

如下所示向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文件中进行了更改。

答案 7 :(得分:0)

如果您使用 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 可以在应用程序启动后通过 URI /h2-console 访问 h2 DB 并以服务器 URL 开头,并使用用户名“sa”和无密码连接到名为“testdb”的数据库在服务器上。

答案 8 :(得分:-1)

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

您可以看到此视频。 https://youtu.be/yYWPuM8k8K4