回答

收藏

H2数据库表上的SQL查询引发ArrayIndexOutOfBoundsException

技术问答 技术问答 148 人阅读 | 0 人回复 | 2023-09-12

我有一个H2些查询可以在数据库中运行,而另一些则被抛出ArrayIndexOutOfBoundsException。
" K& z* v: S6 g9 Z" c例如:
* _# L$ J& ^  u3 w  TSELECT COLUMN_1 FROM MY_TABLE; // works fineSELECT COUNT(COLUMN_1) FROM MY_TABLE; // gives following error message:[Error Code: 50000,SQL State: HY000]  General error: "java.lang.ArrayIndexOutOfBoundsException"; SQL statement: SELECT COUNT(COLUMN_1) FROM MY_TABLE [50000-167]造成这个错误消息的原因是什么?! ?7 s+ @" [& g% r
                                                                % _* i, p+ @' e
    解决方案:                                                                . d/ R0 e& A& p7 [, f  t2 t
                                                                信息错误的原因是 数据库损坏。  ]' Y8 q/ d/ ~; e& b  J+ n0 U
我通过使用H恢复工具解决了这个问题。    步骤如下:
4 ]# W2 c2 w' o! [! g2 @9 X[ol]创建恢复脚本3 @7 U& S" I/ a( X$ n+ s! _
C:\PATH_TO_CORRUPT_DB>java -cp C:\PATH_TO_MY_H2\h2.jar org.h2.tools.Recover删除旧的db文件(当然,备份副本要先做;-)
) X) M9 k* ^% x4 M3 U* Q; O/ }6 E) {重建数据库9 I4 Y- T: d2 X  {3 F) n' q
C:\PATH_TO_CORRUPT_DB>java -cp C:\PATH_TO_MY_H2\h2.jar org.h2.tools.RunScript -url jdbc:h2ATH_TO_CORRUPT_DB\NAME_OF_DB -script NAME_OF_SCRIPT_FROM_STEP_ONE.sql[/ol]在这里,您可以找到相关信息H2更详细的使用说明恢复工具
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则