如何解决H2数据库损坏,java.lang.IllegalStateException:负位置50000-200
在使用H2作为内存数据库的Java应用程序中,我在活动数据库事务中有一个断点(在一个查询之后并代表另一个查询;不在查询中)。 Eclipse在该断点处停止,我更改了一些代码,保存了代码更改,Eclipse跳回到了当前方法的开头,并且该事务的某些部分可能第二次发生了。 然后,JVM冻结了,我不得不杀死它。
下次启动应用程序时,会出现此错误消息,并且应用程序崩溃了。
有时会发生这种情况,并且错误消息甚至有所不同。
发生这种情况时,我必须将数据库重置为备份,以使应用程序重新工作。
有什么方法可以防止数据库损坏,而仍使用该舒适的IDE功能进行调试和更改而无需重新启动应用程序?
org.h2.jdbc.JdbcSQLNonTransientException: Allgemeiner Fehler: "java.lang.IllegalStateException: Negative position -2291; p=4622621761192784,c=chunk:41b1,block:7fffffffffffffff,len:7fffffff,liveMax:0,livePages:0,map:8901,max:d750,pages:7c,root:106c400029598f,time:48b9e9795,unused:48ba43fd2,unusedAtVersion:41b8,version:41b1,pinCount:0 [1.4.200/6]"
General error: "java.lang.IllegalStateException: Negative position -2291; p=4622621761192784,pinCount:0 [1.4.200/6]" [50000-200]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:505)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
at org.h2.message.DbException.get(DbException.java:194)
at org.h2.message.DbException.convert(DbException.java:347)
at org.h2.engine.Database.openDatabase(Database.java:333)
at org.h2.engine.Database.<init>(Database.java:301)
at org.h2.engine.Engine.openSession(Engine.java:74)
at org.h2.engine.Engine.openSession(Engine.java:192)
at org.h2.engine.Engine.createSessionAndValidate(Engine.java:171)
at org.h2.engine.Engine.createSession(Engine.java:166)
at org.h2.engine.Engine.createSession(Engine.java:29)
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:340)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:173)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:152)
at org.h2.Driver.connect(Driver.java:69)
at org.h2.jdbcx.JdbcDataSource.getJdbcConnection(JdbcDataSource.java:189)
at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:352)
at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:384)
at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:234)
at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:199)
at [...]
at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:140)
at [my main class]
Caused by: java.lang.IllegalStateException: Negative position -2291; p=4622621761192784,pinCount:0 [1.4.200/6]
at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:950)
at org.h2.mvstore.Chunk.readBufferForPage(Chunk.java:345)
at org.h2.mvstore.MVStore.readBufferForPage(MVStore.java:1214)
at org.h2.mvstore.MVStore.readPage(MVStore.java:2209)
at org.h2.mvstore.MVMap.readPage(MVMap.java:672)
at org.h2.mvstore.Page$NonLeaf.getChildPage(Page.java:1043)
at org.h2.mvstore.Cursor.hasNext(Cursor.java:53)
at org.h2.mvstore.MVMap$2$1.hasNext(MVMap.java:802)
at org.h2.mvstore.db.LobStorageMap.init(LobStorageMap.java:109)
at org.h2.engine.Database.open(Database.java:791)
at org.h2.engine.Database.openDatabase(Database.java:307)
... 38 common frames omitted
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。