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

Dun*_*ken 19 java hibernate jdbc h2

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

我在文件中使用相同的URL连接到数据库,但我看不到表; 我只能看到信息模式,当我尝试使用select * from tables它时,我也看不到这些表格.

有谁知道什么可能是错的?

Mat*_*ttC 21

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

jdbc:h2:mem:testdb
Run Code Online (Sandbox Code Playgroud)

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

如果你的pom中有h2依赖项,那么控制台是可用的,还有spring Developer tools依赖项.如果您没有工具依赖项,那么您也可以通过拥有h2依赖项并将以下内容添加到application.properties文件中来查看它:

spring.h2.console.enabled=true  #not needed if you have spring-boot-devtools dependency
Run Code Online (Sandbox Code Playgroud)

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

spring.datasource.url=jdbc:h2:~/test_db  #You will see the file in your home directory.
Run Code Online (Sandbox Code Playgroud)

H2不适用于持久数据,但如果您想持久进行测试,请添加:

spring.jpa.hibernate.ddl-auto = update
Run Code Online (Sandbox Code Playgroud)

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

jdbc:h2:~/test_db
Run Code Online (Sandbox Code Playgroud)

如果您想知道,我在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>
Run Code Online (Sandbox Code Playgroud)


Dan*_*owy 10

根据你的问题,看起来你不会成为这个特殊陷阱的受害者,但是这个帖子最终帮我解决了这个问题,所以我在这里为后代录制解决方案,因为它可以帮助其他人解决同样的问题.

我还发现,当我尝试使用H2控制台打开我的数据库时,我得到了一个看似空白的H2数据库(基本上只是一个INFORMATION_SCHEMA表).仔细检查我得到了DB的名称是否正确(mydb.mv.db),我发现H2控制台已经创建了第二个数据库文件mydb.mv.db.mv.db.奇.

事实证明,H2控制台希望您省略.mv.db文件名中的后缀.因为我没有,它一直在寻找mydb.mv.db.mv.db.更改JDBC字符串以jdbc:h2:mydb解决问题,然后我可以从H2控制台打开文件.


小智 9

有同样的问题.

这解决了我: 为什么我的嵌入式h2程序写入.mv.db文件

只需添加;MV_STORE=FALSE;MVCC=FALSE到JDBC URL,一切工作就好了.


HA *_*A S 8

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

  1. 你的班级有@Entity注释.
  2. 您需要在application.properties文件中启用以下内容 spring.h2.console.enabled=true
  3. 运行Spring Boot并输入以下URL localhost:8080/h2-console
  4. 这将显示一个连接屏幕.在JDBC URL:- > jdbc:h2:mem:testdb 5.Hit连接按钮中输入以下更改

萨拉姆