PostgreSQL: невозможно изменить каталог на / root


12

Я пытаюсь скопировать таблицу planet_osm_polygonиз одной базы данных osmв другую test. Я su postgresи выполнил pg_dump.

Проблема: Однако я получаю сообщение об ошибке, could not change directory to "/root"и Password:приглашение появилось дважды! Есть ли способ выполнить pg_dumpпри входе в систему как 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:

ОБНОВИТЬ

Проблема № 2: Кажется, что таблица копируется в publicсхему, хотя я прошел флаг --table="staging.planet_osm_polygon". Почему это не копируется в схему staging?


Нет параметра --table для psql, который может быть причиной проблемы # 2
dezso

@dezso я использую pg_dump, это на самом деле звонит psql? postgresql.org/docs/9.1/static/app-pgdump.html
Nyxynyx,

Нет, но ваша командная строка содержитpsql -h localhost "test" --table "staging.planet_osm_polygon"
dezso

@dezso О, я этого не заметил !! Я думаю, что это всегда будет скопировано в publicсхему
Nyxynyx

Эта проблема связана с тем, что каталог pgsql / не существует, вы должны создать его в / var / lib / pgsql, эта работа для меня .. С уважением, Хирам
Хирам Уокер,

Ответы:


26

Попробуйте это: Re: не удалось изменить каталог на "/ root" :

Очевидно, вы выполнили «su postgres» из учетной записи root, поэтому вы все еще находитесь в домашнем каталоге root. Было бы лучше сделать «su - postgres», чтобы убедиться, что вы приобрели всю среду учетной записи postgres. Чтение "man su" может помочь вам здесь.


Это нормально, что он спрашивает пароль дважды? Повторный ввод пароля не маскирует его.
Nyxynyx

1
Возможно, потому что вы делаете две операции: 1. pg_dump -h localhost "osm" --table "public.planet_osm_polygon" 2. psql -h localhost "test" --table "staging.planet_osm_polygon"
Ela

4
Альтернатива с sudo: sudo -Hiu postgres
Макс Лобур

1

Для меня это сработало, обратите внимание на цитаты (')

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'

Обратите внимание -Hiuна sudo или используйтеsu - postgres

Вы также можете поместить это в cronjob для root с crontab -e

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.