【问题标题】:How to access specific H2 database如何访问特定的 H2 数据库
【发布时间】:2013-10-01 18:28:32
【问题描述】:

我在 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)

谢谢。

【问题讨论】:

    标签: jdbc h2 squirrel-sql


    【解决方案1】:

    在 H2 中,没有 HSQLDB 中的别名机制。您可以在 H2 中执行的操作是为每个服务器设置 one base directory。如果你需要多个基本目录,你可以启动多个服务器(在不同的端口上),如下:

    java org.h2.tools.Server -tcp -tcpPort 9091 -baseDir D:\test\activitiDB
    java org.h2.tools.Server -tcp -tcpPort 9092 -baseDir D:\myapps\jbpmDB
    

    【讨论】:

    • 要从客户端访问数据库,请使用类似于以下内容的 url:jdbc:h2:tcp://:/./
    猜你喜欢
    • 2015-01-21
    • 2023-04-04
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    相关资源
    最近更新 更多