h2 database 的修复

为了方便,使用 h2 做为嵌入式数据库,没想到随着数据量增加,居然开始崩溃了。

几张表加起来才一百万多条记录,访问量也不大,不知道什么情况造成了某张表不可

查询,一查询就报 ArrayIndexOutOfBoundsException ,在h2的网站和issue

里面都查了一下,不知道是什么情况。

 

幸亏这个不是生产系统,不过生产系统也不可能用h2。里面的数据丢失一些也无所谓,

因此,只好把数据导出,然后再想办法导入。h2提供了一些工具,导出比较简单,bat文件:

 

java -Xms256m -Xmx1024m -XX:MaxPermSize=32m -cp "lib/h2-1.3.163.jar;%H2DRIVERS%;%CLASSPATH%" org.h2.tools.Recover %*

 

运行 recover.bat -dir data\db -db dbname 就会生成一个 dbname.h2.sql 这样一个文件。

然后把老的数据库文件移到别的地方,再打开h2的console,在console里面运行 

 

runscript from 'dbname.h2.sql'

 

就OK了,至于丢了哪些数据,现在还不知道,不过不是重要的数据,也不去追究了。

但是这样给我一个很沉重的打击,本来我还是很喜欢h2的,没想到有这么致命的问题,

而且这已经是第二次了,看来以后这种嵌入的数据库,要开始考虑sqlite这样成熟的东西才行。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值