H2数据库:啥是以及为啥会出现database.xx.log.db.corrupt二进制文件

Posted

技术标签:

【中文标题】H2数据库:啥是以及为啥会出现database.xx.log.db.corrupt二进制文件【英文标题】:H2 database: What is and why appears database.xx.log.db.corrupt binary fileH2数据库:什么是以及为什么会出现database.xx.log.db.corrupt二进制文件 【发布时间】:2010-10-14 18:37:51 【问题描述】:

我在我的项目中广泛使用 H2 数据库(大量插入和选择),我注意到在数据库目录中出现了具有以下名称的二进制文件: database.xx.log.db.corrupt,其中 xx - 一个数字。

有谁知道是否有可能理解这个文件代表什么以及它为什么出现?

【问题讨论】:

只是数据库日志文件损坏了? 【参考方案1】:

如果事务日志文件(database.xx.log.db)的文件头损坏,则在数据库启动时,崩溃(电源故障或进程终止)后,最多可以创建一个具有此名称的文件.通常可以忽略该文件,只是没有删除它,以便在必要时可以调查崩溃。这并不意味着您丢失了数据。顺便说一下相关源码在这里:http://code.google.com/p/h2database/source/browse/branches/version-1.1.x/h2/src/main/org/h2/log/LogSystem.java#300

这意味着您使用的是 H2 版本 1.1.x。同时(从 1.2.x 版本开始)H2 不使用单独的事务日志文件。相反,事务日志被集成到主数据库文件中。我建议升级到更新版本的 H2。

【讨论】:

关于版本的好建议!

以上是关于H2数据库:啥是以及为啥会出现database.xx.log.db.corrupt二进制文件的主要内容,如果未能解决你的问题,请参考以下文章

系统崩溃时 H2 数据库缓存会发生啥?

为啥hibernate关闭连接后h2的数据库文件仍然会被锁定一段时间?

为啥 Spring Sql 会丢失对 H2DB 异常的跟踪并引发 NoClassDefFounderror 异常

Access 2013:为啥会出现此语法错误?

为啥这个值对于我的 H2 表来说太长了

当支持 SPDY 的浏览器收到 HTTP2 (H2) 响应时会发生啥?