H2数据库表上的SQL查询引发ArrayIndexOutOfBoundsException
技术问答
150 人阅读
|
0 人回复
|
2023-09-12
|
我有一个H2些查询可以在数据库中运行,而另一些则被抛出ArrayIndexOutOfBoundsException。1 V7 V! b& t! w' m, s) h# o0 g
例如:' C& d3 Y8 J0 U0 Z* ^! w
SELECT 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]造成这个错误消息的原因是什么?
/ P8 V0 B: q' P2 V a" Z
3 C. @- ], k5 V+ G4 G 解决方案:
4 L5 N4 x1 k. `! F 信息错误的原因是 数据库损坏。
! J( ?# _* f4 ?2 k: \0 q$ e我通过使用H恢复工具解决了这个问题。 步骤如下: y# m6 W! P2 ~' J6 L# {6 m% J
[ol]创建恢复脚本
2 C- X- q/ K" y* R4 LC:\PATH_TO_CORRUPT_DB>java -cp C:\PATH_TO_MY_H2\h2.jar org.h2.tools.Recover删除旧的db文件(当然,备份副本要先做;-)/ S8 L& ] g, B/ W
重建数据库7 S% f$ K+ D: s6 k
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更详细的使用说明恢复工具 |
|
|
|
|
|