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更详细的使用说明恢复工具 |
|
|
|
|
|