我接下来从使用H2数据库的Play应用程序获取IOExceptions。像这样:
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-8或https://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 :(得分:1)
回答原始问题。是的,我最近在使用build .187时有过这种体验。
我有以下例外:
org.h2.jdbc.JdbcSQLException:IO异常:“java.io.IOException:在id [1,-109,3,1] [1.4.187 / 50]中找不到块”; “lob:null table:-3 id:7”[90031-187]
...与您的堆栈跟踪类似。
一旦我开始构建.192问题完全消失了。根据更改日志,该问题在版本1.4.189 Beta(2015-09-13)中列为已修复:
http://www.h2database.com/html/changelog.html
所以,我们向上移动到.192并且闭上我们的手指,这样的事情不会再发生!!!