2013-09-10 2 views
0

Я пытаюсь запустить эти команды из этого учебника (http://jamiecook.wordpress.com/2011/11/24/setting-up-postgresql-postgis-for-rails-on-ubuntu/)PSQL говорит мне, «база данных не существует» в некоторых местах, признавая его в других

sudo su - postgres 
createdb -E UTF8 template_postgis # Create the template spatial database. 
createlang -d template_postgis plpgsql # Adding PLPGSQL language support. 
psql -d osm -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql 
psql -d osm -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql 
cat <<EOS | psql -d template_postgis 
UPDATE sample_postgis_db SET datistemplate = TRUE WHERE datname = 'template_postgis'; 
REVOKE ALL ON SCHEMA public FROM public; 
GRANT USAGE ON SCHEMA public TO public; 
GRANT ALL ON SCHEMA public TO postgres; 
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE public.geometry_columns TO PUBLIC; 
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE public.spatial_ref_sys TO PUBLIC; 
GRANT ALL ON geometry_columns TO PUBLIC; 
GRANT ALL ON geography_columns TO PUBLIC; 
GRANT ALL ON spatial_ref_sys TO PUBLIC; 
VACUUM FULL FREEZE; 
EOS 

и я получаю сообщение об ошибке:

ERROR: relation "sample_postgis_db" does not exist 
LINE 1: UPDATE sample_postgis_db SET datistemplate=TRUE WHERE datnam... 

Но это, конечно, существует:

psql -d postgres 
\list 
#=> 
... 
sample_postgis_db | postgres  | UTF8  | en_US.UTF-8 | en_US.UTF-8 | 
... 

Я могу войти в него:

psql -d sample_postgis_db 

, но даже когда я бегу, что UPDATE линии (бессмысленно, конечно, но это хороший тест, я думаю) внутри PSQL дБ, он еще не признает сам.

sample_postgis_db=# UPDATE sample_postgis_db SET datistemplate=TRUE WHERE datname = "template_postgis"; 
ERROR: relation "sample_postgis_db" does not exist 
LINE 1: UPDATE sample_postgis_db SET datistemplate=TRUE WHERE datnam... 

ответ

1

В учебнике есть :

UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template_postgis'; 

, что вы заменили этим:

UPDATE sample_postgis_db SET datistemplate = TRUE WHERE datname = 'template_postgis'; 

Это replacem ent невостребован, поскольку здесь обновляется системная таблица, а не имя базы данных.

+0

oh .. спасибо. –

0

Я ненавижу, как таинственное это ... и, может быть, его просто потому, что я изменил sample_postgis_db «s роль SUPERUSER (от отчаяния), но он только начал работать ...