`
SimonLei
  • 浏览: 174106 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics