如何在localhost:8082查看我的h2数据库中的所有表?

我使用JDBC并从sql脚本创建名为usaDB的h2数据库。 然后我用jdbc填充所有表。

问题是我在localhost:8082连接到usaDB后,我在左边的树上看不到我的表。 我只指定了创建usaDB的INFORMATION_SCHEMA数据库和rootUser。

如何在h2数据库中查看表的内容?

我尝试查询SELECT * FROM INFORMATION_SCHEMA.TABLES

但它返回了许多表名,除了我创建的名称。 我的快照:

在此处输入图像描述

我有同样的问题,答案似乎是非常愚蠢的:当您键入数据库名称时,不应添加“ .h2.db ”后缀,例如,如果您有db文件“ D:\ somebase.h2.db “你的连接字符串应该像” jdbc:h2:file:/ D:/ somebase “。 换句话说, jdbc创建了一个名为“ somebase.h2.db.h2.db ”的新空数据库文件,您可以看到所见:只有系统表。

您可以使用SHOW命令:

语法

使用此命令,可以列出表的模式,表或列。 例如:

 SHOW TABLES 

这个问题驱使我绕过扭曲,除了这个页面,我读了许多(很多!)其他人,直到我解决了它。
我的用例是看看如何使用:: Spring Boot ::(v1.3.1.RELEASE)在STS中创建的SpringBatch项目将在H2数据库中运行; 要做到后者,我需要能够运行H2控制台来查询批处理运行的DB结果。

这就是我所做的,并发现:

  1. 使用Spring Boot在STS中创建了一个Web项目: 在此处输入图像描述

    • 将以下内容添加到后者的pom.xml中: 在此处输入图像描述
    • 在项目中添加了如下Spring配置文件: 在此处输入图像描述 这解决了STS中Web项目的不足。 如果您现在运行该项目,您可以按如下方式访问H2控制台: http:// localhost:8080 / console 在此处输入图像描述
  2. 现在在STS中创建一个SpringBatch项目如下(替代方法创建了一个不同的模板,缺少大多数类来保存数据。这个方法创建了两个项目:一个完成 ,另一个是初始 。使用下面的完成 。): 在此处输入图像描述

    • 使用STS创建的SpringBatch项目使用内存H2数据库,一旦应用程序运行结束,它就会关闭; 一旦运行它,您就可以在日志记录输出中看到这一点。
    • 所以我们需要的是创建一个新的DataSource来覆盖项目附带的默认值(如果你感兴趣,只需查看日志消息,你会看到它使用默认的数据源…这是从:osjde EmbeddedDatabaseFactory ,包含以下参数:
      启动嵌入式数据库: url =’jdbc:hsqldb:mem:testdb’, username =’sa ‘)
    • 所以,它在内存中启动,然后关闭它。 您无法使用H2控制台查看数据; 它已经过去了。
    • 因此,创建一个DataSource,如下所示: 在此处输入图像描述
    • 您当然可以使用属性文件来映射不同DataSource实例的参数和配置文件……但我离题了。
    • 现在,请确保将图片中红色箭头指向的位设置为计算机上可以保留文件的位置。
    • 运行SpringBatch( 完整项目),运行后你应该在该位置有一个db文件(持久化Person数据)
    • 运行之前在这些步骤中配置的Web项目,您将:=)查看您的数据,以及所有批处理作业和步骤运行数据(等等!): 在此处输入图像描述 痛苦但有益。 希望它能真正帮助你实现BOOTSTRAP:=)

我遇到了这个问题。

根据您的描述,我认为您将jdbc与“真正的”h2服务器连接,但是您通过错误的模式(嵌入式内存模式,即h2mem )将Web应用程序连接到数据库。 这意味着h2将在内存中创建一个新数据库,而不是使用存储在别处的真实数据库。

请确保在连接到此数据库时,使用模式Generic H2(Server) ,而不是Generic H2(Embedded) 。 您可以参考下图。

在此处输入图像描述

jar文件和已安装的h2数据库的版本应该相同。

这是一个老问题,但我遇到了同样的问题。 最后我发现默认的JDBC URL指的是测试服务器而不是我的应用程序。 纠正后,我可以访问正确的数据库。

我尝试使用Generic H2(嵌入式)和Generic H2(服务器)选项,只要JDBC URL正确提供,它们都可以工作。

在此处输入图像描述

在我的情况下,问题是由于我没有在java中设置h2用户名,密码。 不幸的是,Spring没有向我显示任何错误,所以要弄清楚并不容易。 将这些行添加到dataSource方法帮助我解决了这个问题:

 dataSource.setUsername("sa"); dataSource.setPassword(""); 

另外,我应该在schema.sql中创建表时指定模式

选择通用H2(服务器)为我解决了。 我们试图使用默认的Generic H2(嵌入式),这是错误的。