我的H2数据库已经损坏(原因不明),有java.lang.IllegalStateException: Chunk 1936 not found [1.4.200/9]
。现在我试着恢复数据。我采取了以下步骤:
java -cp h2*.jar org.h2.tools.Recover
java -cp h2*.jar org.h2.tools.RunScript -url “jdbc:h2:file:~/tmp/recovery” -user user -password password -script file_generated_by_previous_step.mv.txt -showResults
第二步启动并生成大量输出(关于已处理的根和块),但随后出错:
[42000-200]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:453)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
at org.h2.message.DbException.get(DbException.java:205)
at org.h2.message.DbException.get(DbException.java:181)
at org.h2.message.DbException.getSyntaxError(DbException.java:229)
at org.h2.command.Parser.getSyntaxError(Parser.java:1051)
at org.h2.command.Parser.parsePrepared(Parser.java:1013)
at org.h2.command.Parser.parse(Parser.java:843)
at org.h2.command.Parser.parse(Parser.java:819)
at org.h2.command.Parser.prepareCommand(Parser.java:738)
at org.h2.engine.Session.prepareLocal(Session.java:657)
at org.h2.engine.Session.prepareCommand(Session.java:595)
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1235)
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:212)
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:201)
at org.h2.tools.RunScript.process(RunScript.java:224)
at org.h2.tools.RunScript.process(RunScript.java:192)
at org.h2.tools.RunScript.process(RunScript.java:328)
at org.h2.tools.RunScript.runTool(RunScript.java:143)
at org.h2.tools.RunScript.main(RunScript.java:70)
因此,生成的recovery.mv.db
只是一个没有数据的空数据库。
请帮助从损坏的H2数据库中提取任何数据。我发誓我再也不会使用这个数据库了。
https://stackoverflow.com/questions/69952158
复制相似问题