2014-02-17 89 views
17

好吧,所以我對RDS和AWS相當新,但我無法爲我的生活,我的筆記本電腦上創建的數據庫,到amazon RDS,我確實移動它我的測試VPS,也是我的臺式機,根本不需要做任何的問題,這裏是我到目前爲止已經試過..在Amazon RDS上設置PostGis

create extension postgis; 
create extension fuzzystrmatch; 
create extension postgis_tiger_geocoder; 
create extension postgis_topology; 
alter schema tiger owner to rds_superuser; 
alter schema topology owner to rds_superuser; 

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;   

GRANT ALL PRIVILEGES ON DATABASE testgetwork TO luke; 

然後我連接到數據庫,並嘗試加載我的本地新數據庫的副本...

[email protected]:~$ psql --host=myhost.dns.us-west-2.rds.amazonaws.com --port=5432 --username=luke --password --dbname=testgetwork < testgetwork.sql 
Password for user luke: 
SET 
SET 
SET 
SET 
SET 
ERROR: schema "topology" already exists 
ALTER SCHEMA 
CREATE EXTENSION 
ERROR: must be owner of extension plpgsql 
CREATE EXTENSION 
ERROR: must be owner of extension postgis 
CREATE EXTENSION 
ERROR: must be owner of extension postgis_topology 

<more output, removed to save space> 

ERROR: permission denied for relation spatial_ref_sys 
invalid command \. 
setval 
-------- 
     1 
(1 row) 

setval 

<more output, removed to save space> 

我的問題是,我怎麼能從這裏繼續前進?所有功能似乎都被權限問題阻止,用戶luke是rds_superuser組的一部分,任何有PostGis和RDS經驗的人都知道我可以如何糾正這種情況?

testgetwork=> \du 
            List of roles 
    Role name |     Attributes     | Member of  
---------------+------------------------------------------------+----------------- 
luke   | Create role, Create DB       | {rds_superuser} 
rds_superuser | Cannot login         | {} 
rdsadmin  | Superuser, Create role, Create DB, Replication | {} 
+1

我對RDS(尚未)非常熟悉,但是從我看到的它非常熱衷於執行所有者規則。那麼,誰是'testgetwork'數據庫的所有者?可能'rdsadmin'。即使不是這樣,你可能會以更大的成功運行你的命令作爲'rdsadmin'。我意識到這並不理想,但是讓你走出門外可能會證明是成功的。 – ProgrammerDan

回答

12

在RDS上設置PostGIS的官方指南是here

這對我有用。

我仍然有問題導入我的數據,得到:

... 
must be superuser to create a base type 
permission denied for language c 
.... 

那些任何想法?
另外,是否有可能以rdsadmin身份登錄?

+0

我們應該在從SQL文件導入時執行安裝嗎? – sarat

+0

感謝您的鏈接 – geogeek

+0

您是否曾經解決基本類型和語言c問題? – joncon