PostgreSQL: Không thể thay đổi thư mục thành / root


12

Tôi đang cố gắng sao chép một bảng planet_osm_polygontừ cơ sở dữ liệu này osmsang cơ sở dữ liệu khác test. Tôi su postgresvà thực hiện pg_dump.

Vấn đề: Tuy nhiên, tôi đang nhận được lỗi could not change directory to "/root"Password:lời nhắc xuất hiện hai lần! Có cách nào để thực hiện pg_dumpkhi đăng nhập như 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:

CẬP NHẬT

Vấn đề # 2: Có vẻ như bảng được sao chép vào publiclược đồ mặc dù tôi đã truyền cờ --table="staging.planet_osm_polygon". Tại sao nó không được sao chép vào lược đồ staging?


Không có tham số --table nào psql, đó có thể là nguyên nhân của vấn đề # 2
dezso

@dezso Tôi đang sử dụng pg_dump, đó có thực sự đang gọi psqlkhông? postgresql.org/docs/9.1/static/app-pgdump.html
Nyxynyx

Không, nhưng dòng lệnh của bạn chứapsql -h localhost "test" --table "staging.planet_osm_polygon"
dezso

@dezso Ôi tôi không để ý điều đó !! Tôi đoán nó sẽ luôn được sao chép vào publiclược đồ sau đó
Nyxynyx

Vấn đề này là do pssql / thư mục không tồn tại, bạn phải tạo nó trong / var / lib / pssql công việc này cho tôi .. Trân trọng Hiram
Hiram Walker

Câu trả lời:


25

Hãy thử điều này: Re: không thể thay đổi thư mục thành "/ root" :

Rõ ràng bạn đã "su postgres" từ tài khoản root, vì vậy bạn vẫn đang ở trong thư mục gốc của root. Sẽ tốt hơn nếu làm "su - postgres" để đảm bảo bạn đã có được tất cả môi trường của tài khoản postgres. Đọc "man su" có thể giúp bạn ra khỏi đây.


Có phải bình thường là nó yêu cầu mật khẩu hai lần? Nhập mật khẩu lần thứ hai không che giấu nó.
Nyxynyx

1
Có lẽ bởi vì bạn đang làm hai hoạt động: 1. pg_dump -h localhost "OSM" --table "public.planet_osm_polygon" 2. psql -h localhost "test" "staging.planet_osm_polygon" --table
Ela

3
Thay thế bằng sudo: sudo -Hiu postgres
Max lobur

1

Đối với tôi, đây là một mẹo nhỏ, hãy chú ý đến dấu ngoặc kép (')

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'

Lưu ý -Hiucho sudo, hoặc sử dụngsu - postgres

bạn cũng có thể đặt nó trong một cronjob cho root với crontab -e

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.