GaussDB 200修改索引只调用索引名提示索引不存在
背景及现象描述(Background and Symptom)*
--创建分区表索引HR_staffS_p1_index1,不指定索引分区的名字。
CREATE INDEX HR_staffS_p1_index1 ON HR.staffS_p1 (staff_ID) LOCAL;
--创建分区索引HR_staffS_p1_index2,并指定索引分区的名字。
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;”提示索引不存在。
原因分析(Cause Analysis)*
重新创建索引CREATE INDEX HR_staffS_p1_index2 MOVE PARTITION staff_ID2_index TABLESPACE example1。提示索引已存在,然后我们通过\d+ 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;”发现设置成功。
说明当前默认模式不同导致索引修改不成功。
解决办法(Solution)*
在操作表、索引、视图时加上schema引用,格式:schema.table。
建议与总结(Suggestion and Summary)
在数据库中操作表、索引、视图时加上schema是一个非常好的习惯。
- 点赞
- 收藏
- 关注作者
评论(0)