Postgresql 在没有所有者信息的情况下使用pg_dump仍输出角色信息
我使用Postgresql 在没有所有者信息的情况下使用pg_dump仍输出角色信息,postgresql,pg-dump,Postgresql,Pg Dump,我使用pg_dump-O-x转储了一个数据库,希望忽略所有的所有权和角色信息,但是,它仍然包括对原始数据库中经理角色的特定提及,这些角色无法导入,因为它们在我导入的新数据库中不存在。请参阅dump.sql文件的片段: -- -- Name: reassign_owned(); Type: FUNCTION; Schema: public; Owner: - -- CREATE FUNCTION reassign_owned() RETURNS event_trigger LANGUAG
pg_dump-O-x
转储了一个数据库,希望忽略所有的所有权和角色信息,但是,它仍然包括对原始数据库中经理角色的特定提及,这些角色无法导入,因为它们在我导入的新数据库中不存在。请参阅dump.sql文件的片段:
--
-- Name: reassign_owned(); Type: FUNCTION; Schema: public; Owner: -
--
CREATE FUNCTION reassign_owned() RETURNS event_trigger
LANGUAGE plpgsql
AS $$
begin
-- do not execute if member of rds_superuser
IF EXISTS (select 1 from pg_catalog.pg_roles where rolname = 'rds_superuser')
AND pg_has_role(current_user, 'rds_superuser', 'member') THEN
RETURN;
END IF;
-- do not execute if not member of manager role
IF NOT pg_has_role(current_user, 'rdsbroker_xxxxx_manager', 'member') THEN
RETURN;
END IF;
-- do not execute if superuser
IF EXISTS (SELECT 1 FROM pg_user WHERE usename = current_user and usesuper = true) THEN
RETURN;
END IF;
EXECUTE 'reassign owned by "' || current_user || '" to "rdsbroker_xxxxx_manager"';
end
$$;
我在pg_dump和pg_restore源代码中进行了快速搜索,没有看到重新分配所有者语句的用法。我在pg_dump和pg_restore源代码中进行了快速搜索,没有看到重新分配所有者语句的用法。
-O
意味着pg_dump本身不会发出所有权信息。它不会导致它编辑它可能转储的任何函数的源代码,试图阻止这些函数执行它们编写时要执行的操作。-O
表示pg_转储本身不会发出所有权信息。它不会导致它编辑它可能转储的任何函数的源代码,试图阻止这些函数执行它们编写的操作。是否以纯文本格式运行pg_dump?您是否将-O用于pg_转储和/或pg_还原?它作为纯文本文件转储,还原不使用pg_还原。目前这是我唯一的选择。这是AWS RDS实例吗?它看起来像是AWS特有的功能。它确实是一个AWS RDS实例,我不确定是否有任何配置可以禁用它。您是否以纯文本格式运行pg_dump?您是否将-O用于pg_转储和/或pg_还原?它作为纯文本文件转储,还原不使用pg_还原。目前这是我唯一的选择。这是AWS RDS实例吗?它看起来像是AWS特有的功能。它确实是一个AWS RDS实例,我不确定是否有任何配置可以禁用它。