带有损坏表的H2数据库

时间:2018-04-03 07:58:30

标签: java h2

我们有一个H2数据库,看起来是一个损坏的表。使用H2 Web控制台,我们可以在除一个表之外的所有表上运行SELECT *查询。对于这一个表TBL_TRANSACTION,我们得到错误结果:

SELECT * FROM TBL_TRANSACTION;
General error: "java.nio.BufferUnderflowException"; SQL statement:
SELECT * FROM TBL_TRANSACTION [50000-190] HY000/50000

当我们运行H2 Recover工具时,我们得到以下结果:

java -cp h2-1.4.190.jar org.h2.tools.Recover 
Error: java.nio.BufferUnderflowException

恢复工具确实会生成h2.sql和mv.txt文件。但是,在所有CREATE和INSERT语句之后,h2.sql以

结尾
// error: java.nio.BufferUnderflowException

针对此h2.sql文件运行RunScript会恢复损坏的表的一部分,但只能恢复一小部分(仅限发生BufferUnderFlowException的部分。)

问题:

  1. 可能导致这种腐败的原因是什么?
  2. 我们可以采取哪些步骤来恢复数据?
  3. 提前致谢。

0 个答案:

没有答案