H2 控制台无法看到由 JAVA 创建的表

2022-09-01 16:30:02

我已从 http://www.h2database.com/html/download.html 下载了 H2 控制台
,并将文件中
的 URL 配置为 。jdbc.propertiesjdbc:h2:c:/data/Messaging

我在文件中使用相同的URL连接到数据库,但我看不到表;我只能看到信息架构,当我尝试在其中时,我也不能看到表格。select * from tables

有没有人知道可能出了什么问题?


答案 1

一个棘手的事情是,如果您尝试连接到不存在的JDBC URL,H2控制台不会给您错误。相反,它将在该 URL 上创建一个新数据库!要连接到内存中数据库,请使用以下 JDBC URL(http://localhost:8080/h2-console 是默认控制台):

jdbc:h2:mem:testdb

如果您要输入类似jdbc:h2:~/test的内容,则会在您的主目录下创建一个 test.mv 文件。但是您的应用程序仍将使用内存中的数据库。

如果您的pom中有h2依赖项,并且还有spring开发人员工具依赖项,则控制台可用。如果您没有工具依赖项,则还可以通过具有 h2 依赖项并将以下内容添加到 application.properties 文件中来查看它:

spring.h2.console.enabled=true  #not needed if you have spring-boot-devtools dependency

如果希望将 db 作为文件而不是内存,请将以下内容添加到 applications.properties 中:

spring.datasource.url=jdbc:h2:~/test_db  #You will see the file in your home directory.

H2 不用于持久化数据,但如果要持久化以用于测试目的,请添加:

spring.jpa.hibernate.ddl-auto = update

然后启动应用程序,并在控制台上使用此 JDBC URL:

jdbc:h2:~/test_db

如果您想知道,我在 application.properties 中只有 1 个条目(用于数据库文件),以下是我的依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>

答案 2

这是使用 h2 模块启用内存启用数据库的方法。您需要确保以下事项

  1. 您的类具有@Entity注释。
  2. 您需要在应用程序.属性文件中启用以下内容spring.h2.console.enabled=true
  3. 运行 Spring Boot 并输入以下 URLlocalhost:8080/h2-console
  4. 这将显示一个连接屏幕。在JDBC URL: -> jdbc:h2:mem:testdb
  5. 点击连接按钮。

推荐