Spring 启动应用程序中找不到我的 h2 数据库

My h2 database is not found in Spring Boot app

我正在开发 Spring 启动应用程序,并希望在我的机器上使用内存中的 h2 数据库进行测试。配置必须在 yml 文件中完成。该应用程序使用 Hibernate 作为 JPA 实现 - 我创建了一些标有 @Entity 注释的实体 类,因此我也希望在最终访问数据库后看到 table。

不幸的是,我无法访问我的 h2 数据库并收到错误消息:未找到数据库“mem:/mydatabase”,请预先创建它或允许远程创建数据库(在安全环境中不推荐)[90149-200 ] 90149/90149

我一直在尝试各种解决问题的方法,例如不同的数据库类型(例如文件)或 application.yml 文件中的 adding/removing 项。不幸的是,none 成功了。

我不知道是我遗漏了什么还是什么。非常感谢所有提示。

application.yml

server:
  port: 8081

spring:
  datasource:
    url: jdbc:h2:mem:/mydatabase
    username: sa
    password:
    driverClassName: org.h2.Driver
  h2:
    console:
      enabled: true
      path: /h2
      settings:
        web-allow-others: true
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: update

实体示例

import lombok.*;
import org.hibernate.annotations.CreationTimestamp;

import javax.persistence.*;
import java.time.LocalDateTime;

@Entity
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@ToString
public class Accident {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private long id;

    @Column(name = "machine")
    private long machine;

    @Column(name = "accidenttype")
    private int accidentType;

    @Column(name="startedat")
    private LocalDateTime startedAt;

    @Column(name = "reportedat")
    @CreationTimestamp
    private LocalDateTime reportedAt;

}

@maciejd 问题在于数据库可用性。我可以看到您的日志语句显示带有随机标识符的数据库 url。 日志里应该是这样的 然后就只能访问了

H2 控制台位于“/h2”。数据库位于 'jdbc:h2:mem:mydatabase'

您需要在 yml 文件中进行的唯一更改是将 /mydatabase 更改为 mydatabase

spring:
  datasource:
    url: jdbc:h2:mem:mydatabase
    username: sa
    password:
    driverClassName: org.h2.Driver