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
我正在开发 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