PostgreSQL 9.3:pg_dump 由于tiger.direction_lookup 失败

Ada*_*tan 4 postgis aws postgresql-9.3 pg-dump amazon-rds

我正在尝试从我的 PostgreSQL 9.3+PostGIS 数据库之一转储模式:

/usr/lib/postgresql/9.3/bin/pg_dump --schema-only 
                                    -h stg-db.....rds.amazonaws.com 
                                    -U user_name db_name > stg_db_schema.sql
Run Code Online (Sandbox Code Playgroud)

该命令在我的开发数据库上运行良好,但由于以下原因在 stg 和 prod 上失败:

pg_dump: [archiver (db)] query failed: ERROR:  permission denied for relation direction_lookup
pg_dump: [archiver (db)] query was: LOCK TABLE tiger.direction_lookup IN ACCESS SHARE MODE
Run Code Online (Sandbox Code Playgroud)

问题似乎是tiger.direction_lookup. 我用谷歌搜索了一下,这张表似乎与 PostGIS 有关。

我试过--exclude-table-data=tiger.direction_lookup,没有效果(无论如何它都不应该适用于模式)。

知道如何转储我的数据库的架构吗?

Ada*_*tan 7

看来我不得不重新运行AWS RDS PostGIS 说明

CREATE FUNCTION exec(text) returns text language plpgsql volatile AS $f$ BEGIN EXECUTE $1; RETURN $1; END; $f$;
SELECT exec('ALTER TABLE ' || quote_ident(s.nspname) || '.' || quote_ident(s.relname) || ' OWNER TO rds_superuser')
  FROM (
    SELECT nspname, relname
    FROM pg_class c JOIN pg_namespace n ON (c.relnamespace = n.oid) 
    WHERE nspname in ('tiger','topology') AND
    relkind IN ('r','S','v') ORDER BY relkind = 'S')
s;   
Run Code Online (Sandbox Code Playgroud)

这显然是一个 RDS Bug,因为这些指令不应执行多次。

也许这是由于数据库次要版本升级而发生的。