gpt4 book ai didi

java - 我在 H2 中的表在哪里?

转载 作者:行者123 更新时间:2023-11-30 08:53:21 25 4
gpt4 key购买 nike

我将网络应用程序部署到 WildFly 8.02 Final 服务器。我使用带有 jndi namespace 的服务器附带的默认开箱即用数据源:

java:jboss/datasources/ExampleDS

我使用默认网址:

jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE

从 IntelliJ IDEA 数据库客户端工具或其他客户端应用程序访问 H2(我使用 url 连接,因为通过默认端口的 tcp 连接不起作用)。

该应用基本上是一个只有实体 bean 和 persistence.xml 文件的空 WAR。我打算纯粹测试根据我的注释在底层数据源中创建哪些表。

事情是这样的:当我在 persistence.xml 中设置时:

<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>

war 已成功部署,但是当我通过任何客户端工具连接到 H2 数据源时,我只能看到预定义的表:

SELECT * FROM INFORMATION_SCHEMA.TABLES

我可以通过客户端工具创建表,并且可以通过之前的 SQL 查询来跟踪它们的存在。因此,表似乎并不是由 JPA 框架创建的。

但是当我将 persistence.xml 更改为不同的模式创建模式时:

<property name="javax.persistence.schema-generation.database.action" value="create"/>

部署将失败,并出现 jdbc 异常,告知 JPA 尝试创建已经存在的表,但同时客户端工具仍然不显示任何用户创建的表。

谢谢。

最佳答案

看看http://www.h2database.com/html/features.html#in_memory_databases :

To access an in-memory database from another process or from another computer, 
you need to start a TCP server in the same process as the in-memory database
was created. The other processes then need to access the database over TCP/IP
or TLS, using a database URL such as: jdbc:h2:tcp://localhost/mem:db1.

看这里的例子:

H2 database in memory mode cannot be accessed by Console

关于java - 我在 H2 中的表在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29804828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com