我正在尝试从AWS文档中遵循本指南:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html#Appendix.PostgreSQL.CommonDBATasks.PostGIS
On"步骤2:在显示(4 rows)
的文档中加载PostGIS扩展程序"但是有三行。到目前为止,我自己运行相同的命令,我看到四行,文档中缺少的行是tiger_data
。在第3步中,是否还应将tiger_data
的所有权提供给rds_superuser?
在"步骤4:将对象的所有权转移到rds_superuser角色",我在使用文档中提供的查询时出现语法错误,我不知道是什么要解决这个问题:
postgres=> CREATE FUNCTION exec(text) returns text language plpgsql volatile AS $f$ BEGIN EXECUTE $1; RETURN $1; END; $f$;
CREATE FUNCTION
postgres=> SELECT exec('ALTER TABLE ' || quote_ident(s.nspname) || '.' || quote_ident(s.relname) || ' OWNER TO rds_superuser,')
postgres-> FROM (
postgres(> SELECT nspname, relname
postgres(> FROM pg_class c JOIN pg_namespace n ON (c.relnamespace = n.oid)
postgres(> WHERE nspname in ('tiger','topology') AND
postgres(> relkind IN ('r','S','v') ORDER BY relkind = 'S')
postgres-> s;
ERROR: syntax error at end of input
LINE 1: ALTER TABLE tiger.loader_variables OWNER TO rds_superuser,
^
QUERY: ALTER TABLE tiger.loader_variables OWNER TO rds_superuser,
CONTEXT: PL/pgSQL function exec(text) line 1 at EXECUTE statement
答案 0 :(得分:1)
在我看来,这就像文档中的拼写错误一样 - ,
应该有一个;
。正在构建的查询是:
ALTER TABLE tiger.loader_variables OWNER TO rds_superuser,
但应该是:
ALTER TABLE tiger.loader_variables OWNER TO rds_superuser;
因此,请将SELECT
行更改为:
SELECT exec('ALTER TABLE ' || quote_ident(s.nspname) || '.' || quote_ident(s.relname) || ' OWNER TO rds_superuser;')
FROM ...