PostgreSQL: Nie można zmienić katalogu na / root

12

Próbuję skopiować tabelę planet_osm_polygonz jednej bazy danych osmdo drugiej test. Ja su postgresi wykonał pg_dump.

Problem: Jednak pojawia się błąd could not change directory to "/root"i Password:monit pojawił się dwukrotnie! Czy istnieje sposób na wykonanie tego pg_dumppo zalogowaniu jako 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:

AKTUALIZACJA

Problem nr 2: Wygląda na to, że tabela została skopiowana do publicschematu, mimo że mijałem flagę --table="staging.planet_osm_polygon". Dlaczego nie jest kopiowane do schematu staging?

Nyxynyx
źródło
Nie ma parametru --tabela psql, który mógłby być przyczyną problemu nr 2
dezso
@dezso Używam pg_dump, czy to faktycznie dzwoni psql? postgresql.org/docs/9.1/static/app-pgdump.html
Nyxynyx 18.04.13
Nie, ale twoja linia poleceń zawierapsql -h localhost "test" --table "staging.planet_osm_polygon"
dezso 18.04.13
@dezso Oh, nie zauważyłem tego !! Sądzę, że zawsze będzie to publicwtedy skopiowane do schematu
Nyxynyx
Ten problem występuje, ponieważ katalog pgsql / nie istnieje, musisz go utworzyć w / var / lib / pgsql to dzieło dla mnie .. Z poważaniem Hiram
Hiram Walker

Odpowiedzi:

26

Spróbuj tego: Re: nie można zmienić katalogu na „/ root” :

Najwyraźniej zrobiłeś „su postgres” z konta root, więc wciąż jesteś w katalogu głównym roota. Lepiej byłoby zrobić polecenie „su - postgres”, aby upewnić się, że nabyłeś całe środowisko konta postgres. Czytanie „man su” może ci w tym pomóc.

Ela
źródło
Czy to normalne, że dwukrotnie pyta o hasło? Wpisanie hasła po raz drugi nie maskuje go.
Nyxynyx
1
Może dlatego, że robisz dwie operacje: 1. pg_dump -h localhost "OSM" --table "public.planet_osm_polygon" 2. psql -h localhost "test" --table "staging.planet_osm_polygon"
Ela
4
Alternatywa dla sudo: sudo -Hiu postgres
Max Lobur,
1

Dla mnie to załatwiło sprawę, zwróć uwagę na cytaty (')

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'

Zwróć uwagę na -Hiufor sudo lub użyjsu - postgres

możesz także umieścić to w cronjob dla roota crontab -e

Philippe Gachoud
źródło
wspaniały! Chyba wystarczy -hu, wyjaśnienie tutaj: wyjaśniahell.com
explain?cmd=sudo