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.