回答

收藏

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更详细的使用说明恢复工具
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则