【问题标题】:My h2 database is not found in Spring Boot app在 Spring Boot 应用程序中找不到我的 h2 数据库
【发布时间】:2020-11-07 02:02:29
【问题描述】:

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

不幸的是,我无法访问我的 h2 数据库并出现错误:找不到数据库“mem:/mydatabase”,要么预先创建它,要么允许远程创建数据库(不推荐在安全环境中使用)[90149-200] 90149 /90149"

我一直在尝试各种方法来解决问题,例如不同的数据库类型(例如文件)或从 application.yml 文件中添加/删除项目。不幸的是,它们都不起作用。

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

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;

}

【问题讨论】:

  • 错误日志是什么?
  • 尝试删除数据库地址中的“/”,如jdbc:h2:mem:mydatabase

标签: java spring spring-boot hibernate h2


【解决方案1】:

@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

【讨论】:

  • 是的,它有效!我不知道为什么,但我以为我尝试过这种方法但它没有用......不过,问题已经解决了,我非常感谢你的提示。谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-04-06
  • 2014-08-27
  • 2016-07-25
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
  • 2023-03-24
相关资源
最近更新 更多