【问题标题】:Can't see my H2 database in Web Console在 Web 控制台中看不到我的 H2 数据库
【发布时间】:2014-08-15 14:25:46
【问题描述】:

我用我的代码和这个 URL 创建了一个 H2 数据库:

jdbc:h2:C:/data/fixed.db

我的代码可以创建表、执行查询。如果我手动打开文件,我可以成功查看其内容并查看创建查询等

但是,当我尝试通过 Web 界面使用 H2 控制台时,我看不到数据库。相反,Web 控制台会创建 另一个 位于此处 C:/data/fixed.db.mv.db 的空数据库。我只是无法加载我的数据库。

我错过了什么?

编辑

我的代码使用 H2 1.3.175
Web 控制台 H2 1.4.178

【问题讨论】:

  • 文件名是否需要.db扩展名?
  • @MadProgrammer 即使没有.db 扩展,我也遇到了同样的问题。

标签: java h2


【解决方案1】:

终于解决了我的问题……

从 1.4.x 开始,H2 使用 MV_STORE(参见 SO 回答 here 和 Thomas Mueller 评论)。 显然,Web 控制台尝试自动附加 .mv.db 扩展名。即使已经有一个扩展名为h2.db 的文件。

所以,我将代码的 H2 版本从 1.3.175 升级到 1.4.178,最后,我可以看到我的数据...

编辑
这是@devdanke提出的另一种解决方案:

您必须手动告诉您的 H2 1.4.x 不要使用 MV_Store:“;mv_store=false”。好麻烦。

例如,您会以类似以下的代码结尾:

Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection( //
    "jdbc:h2:file:C:\\my\\java\\projects\\test;mv_store=false" //
);

【讨论】:

  • 许多第三方数据库工具使用 H2 1.3.x,因为它是稳定版本。然而,H2 1.4.x 默认使用“beta”、“实验性”的 MV_Store 存储引擎,而 H2 1.3.x 无法读取。由于 H2 不幸的默认设置,您必须手动告诉您的 H2 1.4.x 不要使用 MV_Store:“;mv_store=false”。真麻烦。
  • @devdanke 仅您的评论就解决了我的问题,这与 OP 类似,但直到现在我都无法解决它。非常感谢! ";mv_store=false" 成功了!
  • 几年后阅读我的评论,我很后悔语气。我对 H2 配置默认值感到恼火。但是,更重要的是,我要感谢 Thomas Müller,他出色的 H2 DB,并且他免费提供给我们。
【解决方案2】:

我认为jdbc:h2:C:/data/fixed.db中不需要.db

我用了这两条线,对我来说效果很好

Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:file:G:\\projects\\test;MODE=MySQL;INIT=RUNSCRIPT FROM '~/test.sql'\\;");

我的代码刚刚创建了一个名为 test.mv.db

的 db 文件格式

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2018-09-18
    • 2019-01-15
    • 2017-12-05
    • 2014-07-29
    • 1970-01-01
    相关资源
    最近更新 更多