0

我在 2 个不同的位置有 2 个 H2 数据库

D:\test\activitiDB\activiti.h2.db
and
D:\myapps\jbpmDB\jbpmdb1.h2.db

在 Hsql 中,我可以在 Hsql 属性文件中指定数据库的别名,并简单地使用 JDBC URL 中的别名,如下所示:

jdbc:hsqldb:hsql://localhost:9001/myDB1

其中别名 myDB1 实际上指向 HSQL 数据库中提到的某个文件位置。

是否可以在 H2 数据库系统中使用类似的东西?

这样我就可以通过以下方式从 SQL 客户端或 JAVA 代码访问 H2 数据库:

jdbc:h2:tcp://localhost:9092/jbpmdb1
OR
jdbc:h2:tcp://localhost:9092/activiti

现在使用上面的 URL 在我的 SQL 客户端中显示了这个 StackTrace:

java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.h2.jdbc.JdbcSQLException: Database "D:/apps/dumps/H2_DB/bin/activiti" not found [90013-172]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:169)
    at org.h2.message.DbException.get(DbException.java:146)
    at org.h2.engine.Engine.openSession(Engine.java:54)
    at org.h2.engine.Engine.openSession(Engine.java:160)
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:139)
    at org.h2.engine.Engine.createSession(Engine.java:122)
    at org.h2.server.TcpServerThread.run(TcpServerThread.java:138)
    at java.lang.Thread.run(Unknown Source)

Thanks.

4

1 回答 1

2

在 H2 中,没有 HSQLDB 中的别名机制。您可以在 H2 中为每台服务器设置一个基本目录。如果您需要多个基本目录,您可以启动多个服务器(在不同的端口上),如下所示:

java org.h2.tools.Server -tcp -tcpPort 9091 -baseDir D:\test\activitiDB
java org.h2.tools.Server -tcp -tcpPort 9092 -baseDir D:\myapps\jbpmDB
于 2013-10-02T03:34:15.273 回答