2011-05-04 47 views
0

我们的产品使用H2DB为所有客户共享我们的产品信息。 现在有一位客​​户报告他们无法使用我们的系统,并显示以下错误消息。H2数据库发生“不完整的动态位长度树”异常

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

有人知道这个问题吗?

05/02/2011 16:17:27581 WARN [JDBCExceptionReporter] SQL错误:90031,SQLSTATE:90031 05/02/2011 16:17:27581 ERROR [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:Hibernate操作:无法执行查询;未分类SQLException for SQL [XXXXXXX(It is SQL)]; SQL状态[90031];错误代码[90031]; IO异常:java.util.zip.ZipException:不完整的动态位长度树; zip:YYYYY/H2DB/Database.zip!/Data1.data.db [90031-72];嵌套异常是org.h2.jdbc.JdbcSQLException:IO异常:java.util.zip.ZipException:不完整的动态位长度树; zip:YYYYY/H2DB/Database.zip!/Data1.data.db [90031-72]

05/02/2011 16:17:27,585 INFO [STDOUT] at org.apache.catalina.valves.ErrorReportValve。 invoke(ErrorReportValve.java:105) 05/02/2011 16:17:27,586 ERROR [[action]] Servlet.service()用于servlet操作引发异常 05/02/2011 16:17:27,587 ERROR [[action ]] servlet.service()用于servlet操作引发异常 05/02/2011 16:21:02,367信息[标准输出]位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 05/02/2011 16:21:55,580错误[[action]] Servlet.service()用于servlet操作,在org.apache.catalina.valves.ErrorReportValve.invoke上抛出异常 (ErrorReportValve.java:105)

回答

0

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

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

+0

谢谢托马斯。我也同意你的看法,这可能是JVM上的一个错误。但上面的链接太旧了,它与我们的信息是不一样的。 (我们显示“不完整的动态位长度树”)。 – user670097 2011-05-05 16:35:22

+0

我同意JVM问题是旧的,但我不知道您/您的客户使用的JVM版本。该消息与JVM问题中的消息不同,但是您会在JVM问题的其中一个注释中找到您的消息。我不认为这是H2中的一个错误,因为这个问题不会发生在所有机器上。 – 2011-05-05 19:27:13

0

我找到它的原因。

其实我们定期更新数据库文件,之后我们重新建立到新文件的JDBC连接。 不幸的是,在重建JDBC连接期间发生错误,因此不刷新JDBC连接。

这是它的主要原因。

谢谢托马斯回答我的问题。 这对我们找到一个理由非常有帮助。