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.