Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在localhost:8082上查看我的h2数据库中的所有表?_Java_H2 - Fatal编程技术网

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

Java 如何在localhost:8082上查看我的h2数据库中的所有表?,java,h2,Java,H2,我使用JDBC并从sql脚本创建了名为usaDB的h2数据库。然后我用jdbc填充了所有的表 问题是,在localhost:8082上连接到usaDB后,我无法看到左边树上的内容 我的桌子。只有SCHEMA数据库和rootUser信息是我在创建usaDB时指定的 如何查看我的h2数据库中表的内容 我尝试了查询SELECT*FROM INFORMATION\u SCHEMA.TABLES 但它返回了许多表名,除了我创建的表名。我的快照: jar文件的版本和安装的h2数据库应该是相同的。我正好遇到了

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

问题是,在localhost:8082上连接到usaDB后,我无法看到左边树上的内容 我的桌子。只有SCHEMA数据库和
rootUser
信息是我在创建usaDB时指定的

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

我尝试了查询
SELECT*FROM INFORMATION\u SCHEMA.TABLES

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


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

我正好遇到了这个问题

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

请确保连接到此数据库时,您使用的是模式通用H2(服务器),而不是通用H2(嵌入式)。你可以参考下图


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

这个问题让我左右为难,除了这个页面之外,我还阅读了很多其他页面,直到我解决了它。
我的用例是查看使用::Spring Boot::(v1.3.1.RELEASE)在STS中创建的SpringBatch项目在H2数据库中的行为;为了实现后者,我还需要能够运行H2控制台来查询批处理运行的DB结果

这就是我所做的和发现的:

  • 使用Spring Boot在STS中创建了一个Web项目:

    • 将以下内容添加到后者的pom.xml中:
    • 将Spring配置文件添加到项目中,如下所示: 这解决了STS中的Web项目缺陷。如果您现在运行项目,您可以访问H2控制台,如下所示:
  • 现在在STS中创建一个SpringBatch项目,如下所示(替代方法创建一个不同的模板,该模板缺少用于持久化数据的大多数类。此方法创建两个项目:一个完整项目,另一个初始项目。在下面使用完整项目):

    • 使用STS创建的SpringBatch项目使用内存中的H2数据库,一旦应用程序运行结束,它就会关闭该数据库;一旦运行它,您可以在日志输出中看到这一点
    • 因此,我们需要创建一个新的数据源,该数据源覆盖项目附带的默认数据源(如果您感兴趣,只需查看日志消息,您就会看到它使用默认数据源…这是从以下内容创建的: o、 s.j.d.e.嵌入式数据库工厂具有以下参数:
      正在启动嵌入式数据库:url='jdbc:hsqldb:mem:testdb',用户名='sa')
    • 因此,它在内存中启动一个,然后关闭它。您没有机会通过H2控制台查看数据;它来了又走
    • 因此,创建一个数据源,如下所示:
    • 当然,您可以使用一个属性文件来映射不同数据源实例的参数和概要文件……但我离题了
    • 现在,请确保将图片中红色箭头指向的位设置为计算机上可以保存文件的位置
    • 运行SpringBatch(完整项目)运行后,您现在应该在该位置有一个db文件(持久化个人数据)
    • 运行之前在这些步骤中配置的Web项目,您将:=)看到您的数据,以及所有批处理作业和步骤运行数据(等等!): 痛苦但有益。希望它能帮助您真正引导:=)
  • 您可以使用以下命令:

    使用此命令,可以列出模式、表或表的列。e、 g:

    SHOW TABLES
    

    在我的例子中,问题是因为我没有在java中设置h2用户名和密码。不幸的是,Spring没有向我显示任何错误,所以很难找到答案。将这些行添加到dataSource方法帮助我解决了这个问题:

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

    另外,在schema.sql中创建表时,我应该指定模式。为我选择GenericH2(服务器)。我们试图使用默认的泛型H2(嵌入式),这是错误的。

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

    我尝试了通用H2(嵌入式)和通用H2(服务器)选项,只要正确提供了JDBCURL:这两个选项都可以工作

    在Grails4.0.1中,用于开发的JDBCURL是
    jdbc:h2:mem:devDb
    。请检查您的应用程序.yml文件以获取准确的URL。

    如果您在spring boot中使用maven依赖项创建并填充了H2数据库表,请在使用web控制台连接H2时将JDBC URL更改为
    JDBC:H2:mem:testdb

    适用于在嵌入式(持久模式)中使用H2并希望从IntelliJ“连接”到H2的用户(其他IDE可能也适用)

  • 例如,使用jdbc url如下:
    jdbc:h2:./database.h2
  • 注意,H2不允许隐式相对路径,需要添加显式
    /
  • 相对路径相对于当前workdir
  • 运行应用程序时,workdir很可能设置为项目