【问题描述】
EsgynDB执行truncate表异常中断,查询该表时提示:Object has invalid state and cannot be accessed
» select count(*) from test0110; *** ERROR[4254] Object TRAFODION.SEABASE.TEST0110 has invalid state and cannot be accessed. Use cleanup command to drop it. *** ERR0R[4O82] Object TRAFODION.SEABASE.TEST01lO does not exist or is inaccessible. *** ERR0R[8822] The statement was not prepared.
【问题原因】
EsgynDB执行truncate操作时,内部会执行一系列过程,包括:修改元数据信息、禁用底层HBase表、删除底层HBase表等,truncate是一个DDL操作,异常中断可能造成某些步骤没有回滚,导致表的状态异常;
【问题解决】
首先检查底层HBase表是否正常,如果底层HBase表被disable了,需要到HBase Shell下启用此表;
hbase shell> is_enabled 'XXX' hbase shell> enable 'XXX'
如果HBase表正常,则只需要改写元数据信息的valid_def状态为'Y';
update "_MD_".objects set valid_def='Y' where object_name='XXX';
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69985104/viewspace-2727158/ ,如需转载,请注明出处,否则将追究法律责任。