H2数据库表上的SQL查询引发ArrayIndexOutOfBoundsException [英] SQL query on H2 database table throws ArrayIndexOutOfBoundsException

查看:607
本文介绍了H2数据库表上的SQL查询引发ArrayIndexOutOfBoundsException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个H2数据库,其中一些查询可以在其中运行,而其他查询则抛出ArrayIndexOutOfBoundsException.

I have a H2 database on which some queries work, while others are throwing an ArrayIndexOutOfBoundsException.

例如:

SELECT COLUMN_1 FROM MY_TABLE; // works fine


SELECT 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]

此错误消息的原因是什么?

What is the cause for this eror message?

推荐答案

错误消息的原因是数据库损坏.

The reason for the error message was a corrupt database.

我已使用H2恢复工具解决了该问题.步骤如下:

  1. 创建恢复脚本

  1. Create the recovery script

C:\PATH_TO_CORRUPT_DB>java -cp C:\PATH_TO_MY_H2\h2.jar org.h2.tools.Recover

  • 删除旧的db文件(当然,不是先制作备份副本;-))

  • Delete the old db file (not without making a backup copy first, of course ;-))

    重新创建数据库

    C:\PATH_TO_CORRUPT_DB>java -cp C:\PATH_TO_MY_H2\h2.jar org.h2.tools.RunScript -url jdbc:h2:PATH_TO_CORRUPT_DB\NAME_OF_DB -script NAME_OF_SCRIPT_FROM_STEP_ONE.sql
    


  • 在这里,您可以找到 H2恢复工具的更详细的使用说明


    Here you can find a more detailed usage description of the H2 Recovery Tool

    这篇关于H2数据库表上的SQL查询引发ArrayIndexOutOfBoundsException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆