PostgreSQL: Tidak dapat mengubah direktori ke / root

12

Saya mencoba menyalin tabel planet_osm_polygondari satu database osmke yang lain test. Saya su postgresdan melakukan pg_dump.

Masalah: Namun saya mendapatkan kesalahan could not change directory to "/root"dan Password:prompt muncul dua kali! Apakah ada cara untuk melakukan pg_dumpketika masuk sebagai 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:

MEMPERBARUI

Masalah # 2: Tampaknya tabel disalin ke publicskema meskipun saya melewati bendera --table="staging.planet_osm_polygon". Mengapa tidak disalin ke skema staging?

Nyxynyx
sumber
Tidak ada parameter --tabel untuk psql, yang mungkin menjadi penyebab masalah # 2
dezso
@dezso saya menggunakan pg_dump, apakah itu benar-benar memanggil psql? postgresql.org/docs/9.1/static/app-pgdump.html
Nyxynyx
Tidak, tetapi baris perintah Anda mengandungpsql -h localhost "test" --table "staging.planet_osm_polygon"
dezso
@dezso Oh saya tidak memperhatikan itu !! Saya kira itu akan selalu disalin ke publicskema kemudian
Nyxynyx
Masalah ini karena pgsql / direktori tidak ada, Anda harus membuatnya di / var / lib / pgsql ini berfungsi untuk saya .. Salam Hiram
Hiram Walker

Jawaban:

25

Coba ini: Re: tidak dapat mengubah direktori menjadi "/ root" :

Tampaknya Anda melakukan "su postgres" dari akun root, jadi Anda masih berada di direktori home root. Akan lebih baik untuk melakukan "su - postgres" untuk memastikan Anda telah memperoleh semua lingkungan akun postgres. Membaca "man su" dapat membantu Anda di sini.

Ela
sumber
Apakah normal meminta kata sandi dua kali? Mengetik kata sandi untuk kedua kalinya tidak menutupinya.
Nyxynyx
1
Mungkin karena Anda melakukan dua operasi: 1. pg_dump -h localhost "osm" --table "public.planet_osm_polygon" 2. psql -h localhost "test" --tabel "staging.planet_osm_polygon"
Ela
4
Alternatif dengan sudo: sudo -Hiu postgres
Max Lobur
1

Bagi saya ini berhasil, perhatikan tanda kutip (')

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'

Perhatikan -Hiuuntuk sudo, atau gunakansu - postgres

Anda juga bisa memasukkannya ke dalam cronjob untuk root crontab -e

Philippe Gachoud
sumber