您可以在 H2 中创建多个目录吗?

Posted

技术标签:

【中文标题】您可以在 H2 中创建多个目录吗?【英文标题】:Can you create multiple catalogs in H2? 【发布时间】:2014-08-01 21:32:25 【问题描述】:

当您像这样连接到嵌入式本地 H2 数据库时:

jdbc:h2:./target/data/CATALOGA;

H2 使用数据库名称(此处为 CATALOGA)作为 CATALOG_NAME。这可以通过查询 INFORMATION_SCHEMA.CATALOGS 表来查看。

是否可以有多个目录?

您不能插入 INFORMATION_SCHEMA 并且 H2 不允许 CREATE CATALOG 语句。


背景信息是我们有跨目录连接的查询。所以看起来像:

select * from CATALOGA.dbo.example e
    inner join CATALOGB.dbo.example2 e2 on e.fk = e2.fk

查询中直接包含目录/模式,我需要能够在 H2 上执行它们。

【问题讨论】:

【参考方案1】:

对于 H2,目录就是数据库。在 H2 中,您可以在一个数据库中创建多个模式,但不能创建多个目录。

当然你可以创建多个数据库,但我想这不是你想要的,因为数据库是独立的。您可以使用"create linked table" 功能链接另一个数据库中的表,但链接的表仍处于相同的架构中。

【讨论】:

我注意到链接表功能,但文档说只有简单的选择是可能的。我认为它在我的场景中不起作用,因为我需要正确地加入它们? 我想知道,您在文档的什么地方读到只有简单的选择是可能的?这听起来像一个文档错误。确实,连接可能不如您在真实数据库中执行时那么有效,但连接是可能的(以及更新、删除、插入)。 我想我可能误解了这句话。 Linked Tables 部分说 Only simple statements are executed against the target database, that means no joins. 我认为这意味着您不能加入链接表。 我明白了。我将更新文档并添加“包含连接的查询转换为简单查询” 是的,只是抱有希望。我认为对于我们中的一些人来说,我们将 h2 用于支持多个目录的生产和 qa 数据库的测试开发数据库。即使它不是真正的目录,以某种方式复制它也会非常方便。

以上是关于您可以在 H2 中创建多个目录吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以通过 IOS 中的 phonegap/cordova 在 www 目录中创建一个文件夹吗?

您可以在单个存储库中为每个目录添加额外的 .gitignore 吗?

如何在 HSQLDB 中创建多个目录

如何在spring boot中创建H2+flyway测试数据库?

在 C 中创建一个新目录

如何在 Java 中创建临时目录/文件夹?