发生版本
【GaussDB(DWS)】【C80SPC300】
问题描述
扩容新节点导入元数据阶段报错:
“defalt_transaction_read_only” can not be changed now

问题分析
使用如下命令手动导出对应sql文件,确认文件中包含设置default_transaction_read_only为off的语句
gs_dumpall -U omm -W Bigdata123@ -p 25330 -s –dump-wrm –include-templatedb –file=’schema_datanode.sql’ -g

手动alter role属性报同样的错误

查看pg_db_role_setting结果如下:

解决方案
使用如下存储过程将pg_db_role_setting中的内容清空:
CREATE OR REPLACE FUNCTION public.pgxc_set_roles() RETURNS void
AS $$
DECLARE
rd record;
fetch_dn text;
SQL_STR TEXT;
BEGIN
fetch_dn := ‘SELECT node_name FROM pg_catalog.pgxc_node WHERE node_type=”D” or node_type=”C” order by node_name’;
FOR rd IN EXECUTE(fetch_dn) LOOP
sql_str := ‘EXECUTE DIRECT ON (‘ || rd.node_name || ‘) ”delete from pg_db_role_setting ”’;
EXECUTE IMMEDIATE sql_str;
RAISE INFO ‘cancel query with node_name = %’, rd.node_name;
END LOOP;
END; $$
LANGUAGE ‘plpgsql’;
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/316525.html