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 Я використовую pg_dump, це насправді дзвонить psql? postgresql.org/docs/9.1/static/app-pgdump.html
Nyxynyx

Ні, але ваш командний рядок міститьpsql -h localhost "test" --table "staging.planet_osm_polygon"
дез

@dezso О, я цього не помітив !! Я думаю, що це завжди буде скопійовано на publicсхему
Nyxynyx

Це питання тому, що pgsql / каталог не існує, ви повинні створити його в / var / lib / pgsql для цієї роботи для мене .. Ласкаво з повагою Hiram
Hiram Walker

Відповіді:


26

Спробуйте це: Re: не вдалося змінити каталог на "/ root" :

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


Це нормально, що його двічі просять пароль? Введення пароля вдруге не маскує його.
Nyxynyx

1
Може тому, що ви робите дві операції: 1. pg_dump -h localhost "osm" --table "public.planet_osm_polygon" 2. psql -h localhost "test" --table "staging.planet_osm_polygon"
Ела

4
Альтернатива з судо: 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судо або використанняsu - postgres

Ви також можете помістити це в cronjob для root з crontab -e


чудово! Я думаю , -Г вхопив би, пояснення тут: explainshell.com/explain?cmd=sudo+-Hiu
rubo77
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.