H2Database 上发生“不完整的动态位长度树”异常

Posted

技术标签:

【中文标题】H2Database 上发生“不完整的动态位长度树”异常【英文标题】:"incomplete dynamic bit lengths tree" exception is happened on H2Database 【发布时间】:2011-05-04 16:30:46 【问题描述】:

我们的产品使用 H2DB 为所有客户共享我们的产品信息。 这些天来,一位客户报告说他们无法使用我们的系统并显示以下错误消息。

我将该文件移动到其他服务器,它工作正常。

有人知道这个问题吗?

05/02/2011 16:17:27,581 警告 [JDBCExceptionReporter] SQL 错误:90031,SQLState:90031 2011 年 5 月 2 日 16:17:27,581 错误 [JDBCExceptionReporter] IO 异常:java.util.zip.ZipException:不完整的动态位长度树; zip:/home/ads/RealMedia/ads/OpenAd/RMFoundry/H2DB/OasRM_H2.zip!/OasRM.data.db [90031-72]

05/02/2011 16:17:27,582 INFO [STDOUT] org.springframework.jdbc.UncategorizedSQLException:休眠操作:无法执行查询; SQL [XXXXXXX(It is SQL)] 的未分类 SQLException; SQL 状态 [90031];错误代码 [90031]; IO 异常:java.util.zip.ZipException:不完整的动态位长度树;邮编:YYYY/H2DB/Database.zip!/Data1.data.db [90031-72];嵌套异常是 org.h2.jdbc.JdbcSQLException:IO 异常:java.util.zip.ZipException:不完整的动态位长度树; zip:YYYY/H2DB/Database.zip!/Data1.data.db [90031-72]

05/02/2011 16:17:27,585 信息 [STDOUT] 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 2011 年 5 月 2 日 16:17:27,586 错误 [[action]] Servlet.service() 用于 servlet 操作引发异常 2011 年 5 月 2 日 16:17:27,587 错误 [[action]] Servlet.service() 用于 servlet 操作引发异常 2011 年 5 月 2 日 16:21:02,367 信息 [STDOUT] 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 2011 年 5 月 2 日 16:21:55,580 错误 [[action]] Servlet.service() 用于 servlet 操作引发异常 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)

【问题讨论】:

【参考方案1】:

如果它在一台计算机上运行但在另一台计算机上运行,​​则可能是 JVM 的问题。另见this issue report for the Sun JVM。

顺便说一句,您使用的是相当旧的 H2 版本 1.0.72(内部版本号包含在错误代码中,[90031-72])。您是否考虑升级到 H2 的更新版本?

【讨论】:

谢谢托马斯。我也同意您的观点,这可能是 JVM 上的错误。但是上面的链接太旧了,与我们的信息不同。 (我们展示了“不完整的动态位长树”)。 我同意 JVM 问题很老,但是我不知道您/您的客户使用的 JVM 版本。该消息与 JVM 问题中的消息不同,但您会在 JVM 问题的 cmets 之一中找到您的消息。我只是不认为这是 H2 中的错误,因为问题不会出现在所有机器上。【参考方案2】:

我找到了原因。

实际上我们会定期更新数据库文件,然后重新建立与新文件的 JDBC 连接。 不幸的是,在重新建立JDBC连接的过程中发生了错误,所以没有刷新JDBC连接。

这是主要原因。

感谢托马斯回答我的问题。 找到原因对我们很有帮助。

【讨论】:

以上是关于H2Database 上发生“不完整的动态位长度树”异常的主要内容,如果未能解决你的问题,请参考以下文章

找不到依赖项 'com.h2database:h2:1.4.200',无法读取 com.h2database:h2:jar 的工件描述符

glassfish 和 h2database 问题

使用 DB2 语法截断 H2Database 中的表

使用 h2database 进行 Spring boot 1.4 测试(在每个测试中回滚)

H2 数据库:如何解锁数据库文件以进行备份?

H2知识小结