文档首页/ 数据仓库服务 GaussDB(DWS)/ 故障排除/ 数据库使用/ 修改索引只调用索引名提示索引不存在
更新时间:2024-07-01 GMT+08:00

修改索引只调用索引名提示索引不存在

问题现象

创建分区表索引HR_staffS_p1_index1,不指定索引分区的名字。

1
CREATE INDEX HR_staffS_p1_index1 ON HR.staffS_p1 (staff_ID) LOCAL;

创建分区索引HR_staffS_p1_index2,并指定索引分区的名字。

1
2
3
4
5
6
CREATE INDEX HR_staffS_p1_index2 ON HR.staffS_p1 (staff_ID) LOCAL
(
    PARTITION staff_ID1_index,
    PARTITION staff_ID2_index TABLESPACE example3,
    PARTITION staff_ID3_index TABLESPACE example4
) TABLESPACE example;

修改索引分区staff_ID1_index的表空间为example1:

调用“ALTER INDEX HR_staffS_p1_index2 MOVE PARTITION staff_ID2_index TABLESPACE example1;”提示索引不存在。

原因分析

重新创建索引CREATE INDEX HR_staffS_p1_index2 MOVE PARTITION staff_ID2_index TABLESPACE example1,提示索引已存在,然后执行以下SQL命令或者gsql客户端元命令\d+ HR.staffS_p1 查询索引时发现索引已存在。

1
SELECT * FROM DBA_INDEXES WHERE index_name = HR.staffS_p1 ;

推测是当前模式是public模式,而不是hr模式,导致检索不到该索引。

使用“ALTER INDEX hr.HR_staffS_p1_index2 MOVE PARTITION staff_ID2_index TABLESPACE example1;”验证推测,发现调用成功。

接着调用ALTER SESSION SET CURRENT_SCHEMA TO hr;再次调用“ALTER INDEX HR_staffS_p1_index2 MOVE PARTITION staff_ID2_index TABLESPACE example1;”发现设置成功。

解决办法

在操作表、索引、视图时加上schema引用,格式:schema.table。