Postgresql-9.3

PostgreSQL 9.3:pg_dump 由於tiger.direction_lookup 而失敗

  • December 6, 2019

我正在嘗試從我的 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

該命令在我的開發數據庫上執行良好,但在 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

問題似乎是tiger.direction_lookup. 我用Google搜尋了一下,這張表似乎與 PostGIS 有關。

我試過--exclude-table-data=tiger.direction_lookup了,但沒有效果(無論如何它不應該適用於模式)。

知道如何能夠轉儲我的數據庫的架構嗎?

看來我不得不重新執行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;   

這顯然是一個 RDS 錯誤,因為這些指令不應該被多次執行。

這可能是由於數據庫次要版本升級而發生的。

引用自:https://dba.stackexchange.com/questions/73856