2016-05-28 57 views
1

最近我从使用H2数据库的Play应用程序中得到IOExceptions。事情是这样的:使用H2数据库的IOException异常

Caused by: java.io.IOException: Block not found in id [1, -68, 2, 2] [1.4.187/50] 
    at org.h2.mvstore.StreamStore$Stream.read(StreamStore.java:466) ~[com.h2database.h2-1.4.187.jar:1.4.187] 
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) ~[na:1.8.0_40] 
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) ~[na:1.8.0_40] 
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) ~[na:1.8.0_40] 
    at java.io.InputStreamReader.read(InputStreamReader.java:184) ~[na:1.8.0_40] 
    at java.io.BufferedReader.fill(BufferedReader.java:161) ~[na:1.8.0_40] 
    at java.io.BufferedReader.read1(BufferedReader.java:212) ~[na:1.8.0_40] 
    at java.io.BufferedReader.read(BufferedReader.java:286) ~[na:1.8.0_40] 
    at org.hibernate.type.descriptor.java.DataHelper.extractString(DataHelper.java:88) ~[org.hibernate.hibernate-core-4.3.11.Final.jar:4.3.11.Final] 

这可能是他们在https://groups.google.com/forum/#!topic/h2-database/myX5RH6cV-8https://groups.google.com/forum/#!topic/h2-database/Gv5Nu2subzM议论纷纷。这里有人写'1.4.186,1.4.187和1.4.188是易受攻击的版本。'。在我的Play版本(2.4.3)中使用了H2版本1.4.187。

它似乎偶尔发生,到目前为止我找不到任何理由发生。

我想知道为什么没有更多的东西在互联网上找到这个问题。一个不稳定的数据库似乎相当重要。我只是将版本设置为最新版本1.4.191,并会密切监视它。有没有人有过与H2和Play类似的经历?

+0

嘿!我有同样的问题。显然在那个讨论中他们说这个问题已经解决了,但是我使用的是build 1.4.191,我一遍又一遍地看到了这个问题。这是在关闭数据库连接进行了一些更改之后开始的,因此我确定它是相关的。我会继续调查和阅读,看看我是否找出解决方案。 –

回答

1

回答原始问题。是的,我最近在使用build。187时有过这样的经历。

我有以下例外:

org.h2.jdbc.JdbcSQLException:IO异常:“java.io.IOException的:块ID中没有发现[1,-109,3,1] [1.4。五十〇分之一百八十七]“; “lob:null table:-3 id:7”[90031-187]

...与您的类似堆栈跟踪。

一旦我开始建立.192,问题就完全消失了。问题是上市基于更改日志为固定版本1.4.189 Beta版(2015年9月13日):

http://www.h2database.com/html/changelog.html

所以,我们向上移动到.192并关闭我们的手指这样的事情不会再发生!

+1

谢谢Jose!我会尝试192.到目前为止,我还没有时间再次研究它。我会及时通知你的。 – Kris

+0

更新:到目前为止,我再也没有这个错误。所以192似乎工作。我仍然不满意这种情况发生在H2上。我不想使用不可靠的数据库。 :( – Kris

+0

我现在有192这个问题。切换到193至少没有解决它现在破碎的数据库。:-( – Dominique