往数据库插入或更新数据时报错,提示分布键不能被更新,错误信息如下所示:GaussDB(DWS) 分布键不允许被更新。
问题现象
往数据库插入或更新数据时报错,提示分布键不能被更新,错误信息如下所示:
ERROR: Distributed key column can't be updated in current version |
原因分析
GaussDB(DWS) 分布键不允许被更新。
处理方法
方法一:分布键目前暂不支持更新,直接跳过该报错。
方法二:将分布列修改为一个不会更新的列(8.1.0 版本后,支持调整分布列,以下为示例)。
-
查询当前表定义,回显发现该表分布列为 c_last_name。
select pg_get_tabledef(‘customer_t1’);
-
尝试执行更新分布列中的数据提示错误信息。
update customer_t1 set c_last_name = ‘Jimy’ where c_customer_sk = 6885;
-
将该表的分布列修改为不会更新的列,例如 c_customer_sk。
alter table customer_t1 DISTRIBUTE BY hash (c_customer_sk);
-
重新执行更新旧的分布列的数据。更新成功。
update customer_t1 set c_last_name = ‘Jimy’ where c_customer_sk = 6885;