我一直在努力使用sed
输出的几个修改(使用pg_dump
)来匹配 AWS RDS 对用户/角色的限制,但已经到了在重新创建所需的数据库结构的同时禁止pg_catalog
模式访问的点,并使搜索路径变得混乱。
最初我们有:
错误:架构pg_catalog
的权限被拒绝触发自:
SET search_path = reports, pg_catalog;
--
-- Name: entrada_salida; Type: TYPE; Schema: reports; Owner: waypoint
--
CREATE TYPE entrada_salida AS (
entrada timestamp with time zone,
salida timestamp with time zone
);
当前的pg_dump命令已演变为:
pg_dump -U waypoint -h $PGHOST --schema-only $PGDATABASE | sed -- 's/COMMENT ON EXTENSION/-- COMMENT ON EXTENSION/g' | sed -- 's/, pg_catalog;/;/g' | tr -d $'\r' > /tmp/schema.sql
但是从pg_dump生成的脚本(pg_catalog
行)中删除SET search_path
会产生以下结果:
ERROR: no schema has been selected to create in
任何可行的解决方法?
备注
为--
行添加了前导COMMENT ON EXTENSION
(已注释掉),因为不允许在RDS中修改现有扩展名
tr
用于在某些用户定义的函数中过滤掉左侧嵌入的CTRL-M字符。
修改
手动编辑转储以强制使用reports
entrada_salida
类型,我得到了:
ERROR: permission denied for schema reports
所以我猜有一些权限没有被迁移,我将不得不在转储中查找它们
答案 0 :(得分:0)
AWS RDS中似乎禁止使用“创建类型”,因为它需要超级用户访问权限。 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.MasterAccounts.html