PostgreSQL: impossible de changer le répertoire en / root

12

J'essaie de copier une table planet_osm_polygond'une base osmde données à une autre test. J'ai su postgreset effectué le pg_dump.

Problème: Cependant, je reçois l'erreur could not change directory to "/root"et l' Password:invite est apparue deux fois! Existe-t-il un moyen d'effectuer le pg_dumplorsque vous êtes connecté en tant que root?

root@lalaland:~# su postgres
postgres@lalaland:/root$ pg_dump -h localhost "osm" --table "public.planet_osm_polygon" | 
    psql -h localhost "test" --table "staging.planet_osm_polygon"
could not change directory to "/root"
could not change directory to "/root"
Password: Password:

MISE À JOUR

Problème n ° 2: Il semble que la table est copiée dans le publicschéma même si j'ai passé le drapeau --table="staging.planet_osm_polygon". Pourquoi n'est-il pas copié dans le schéma staging?

Nyxynyx
la source
Il n'y a pas de paramètre --table pour psql, cela peut être la cause du problème # 2
dezso
@dezso J'utilise pg_dump, est-ce que c'est vraiment ça psql? postgresql.org/docs/9.1/static/app-pgdump.html
Nyxynyx
Non, mais votre ligne de commande contientpsql -h localhost "test" --table "staging.planet_osm_polygon"
dezso
@dezso Oh je n'ai pas remarqué ça !! Je suppose que cela sera toujours copié dans le publicschéma
Nyxynyx
Ce problème est dû au fait que le répertoire pgsql / n'existe pas, vous devez le créer dans / var / lib / pgsql ce travail pour moi .. Cordialement Hiram
Hiram Walker

Réponses:

25

Essayez ceci: Re: n'a pas pu changer le répertoire en "/ root" :

Apparemment, vous avez fait "su postgres" à partir du compte root, vous êtes donc toujours dans le répertoire personnel de root. Il serait préférable de faire "su - postgres" pour vous assurer que vous avez acquis tout l'environnement du compte postgres. La lecture de "man su" pourrait vous aider ici.

Ela
la source
Est-il normal qu'il demande deux fois le mot de passe? Taper le mot de passe une deuxième fois ne le masque pas.
Nyxynyx
1
Peut-être parce que vous effectuez deux opérations: 1. pg_dump -h localhost "osm" --table "public.planet_osm_polygon" 2. psql -h localhost "test" --table "staging.planet_osm_polygon"
Ela
4
Alternative avec sudo: sudo -Hiu postgres
Max Lobur
1

Pour moi, cela a fait l'affaire, faites attention aux citations (')

sudo -Hiu postgres 'pg_dump --column-inserts --data-only --table=someTable entities_db > /var/backups/anywhere/$(date +%Y%m%d_%H%M%S)_someTable.sql'

Notez le -Hiupour sudo, ou utilisezsu - postgres

vous pouvez également mettre cela dans un cronjob pour root avec crontab -e

Philippe Gachoud
la source