删除 H2 数据库中的元数据(信息模式)

Posted

技术标签:

【中文标题】删除 H2 数据库中的元数据(信息模式)【英文标题】:Delete meta data (Information schema) in H2 data base 【发布时间】:2014-01-09 16:15:26 【问题描述】:

我正在用 Java 编写代码来构建模式并填充 H2 内存数据库 为了测试它,我想删除所有数据并尝试从代码中重建它。

我尝试通过命令删除所有数据:

drop all objects

但我仍然在 H2 控制台的 INFORMATION_SCHEMA 文件夹中有对象。 有没有一个简单易用的命令可以从 H2 中删除所有信息?

谢谢。

【问题讨论】:

您不能从INFORMATION_SCHEMA 中删除对象,它们是数据库所需元数据的重要组成部分。 谢谢,我怎样才能完全重置数据库? drop all objects 会做到这一点。您可以忽略INFORMATION_SCHEMA 中可见的对象。正如我所说:它们是数据库的重要(内部)部分。别惹他们 谢谢@a_horse_with_no_name :) 【参考方案1】:

对于 H2 数据库,您不能删除 INFORMATION_SCHEMA 和它的表。

这些表不是常规表(其中行保留在数据库文件中)。相反,数据是在查询时按需生成的。 (有一个例外:有 3 个表包含 CLOB 和 BLOB 数据,但这些表是隐藏的。在 H2 的未来版本中,这些表可能会消失。)

【讨论】:

谢谢,你建议如何在修改数据库后彻底干净启动?有没有比删除文件更简单的方法? 是的,运行语句“drop all objects”。

以上是关于删除 H2 数据库中的元数据(信息模式)的主要内容,如果未能解决你的问题,请参考以下文章

Canal的元数据变化解决办法

Canal的元数据变化解决办法

重复删除和加载相同数据后,H2 db 大小持续增加

H2(文件)删除性能

H2 - Postgres 模式支持网络数据类型

播放框架2:内存数据库中的h2 mysql兼容模式:转义字符