PostgreSQL: ไม่สามารถเปลี่ยนไดเรกทอรีเป็น / root ได้


12

ฉันพยายามที่จะคัดลอกตารางplanet_osm_polygonจากฐานข้อมูลหนึ่งไปยังอีกosm testฉันและดำเนินการsu postgrespg_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:

UPDATE

ปัญหา # 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 โอ้ฉันไม่ได้สังเกตว่า !! ฉันเดาว่ามันจะถูกคัดลอกไปยังpublicschema เสมอ
Nyxynyx

ปัญหานี้เกิดขึ้นเนื่องจากไม่มีไดเรกทอรี pgsql / คุณต้องสร้างใน / var / lib / pgsql งานนี้สำหรับฉัน .. ขอแสดงความนับถือ Hiram
Hiram Walker

คำตอบ:


26

ลองสิ่งนี้: Re: ไม่สามารถเปลี่ยนไดเรกทอรีเป็น "/ root" :

เห็นได้ชัดว่าคุณทำ "su postgres" จากบัญชีรูทดังนั้นคุณยังอยู่ในไดเรกทอรีหลักของรูท จะเป็นการดีกว่าถ้าคุณทำ "su - postgres" เพื่อให้แน่ใจว่าคุณได้รับสภาพแวดล้อมของบัญชี postgres ทั้งหมด การอ่าน "man su" อาจช่วยคุณได้จากที่นี่


เป็นเรื่องปกติไหมที่จะขอรหัสผ่านสองครั้ง? การพิมพ์รหัสผ่านเป็นครั้งที่สองไม่ได้ปิดบังไว้
Nyxynyx

1
อาจจะเป็นเพราะคุณกำลังทำทั้งสองดำเนินการดังนี้ 1. pg_dump -h localhost "OSM" --table "public.planet_osm_polygon" 2. psql -h localhost "การทดสอบ" --table "staging.planet_osm_polygon"
Ela

4
ทางเลือกกับ sudo: sudo -Hiu postgres
Max Lobur

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 สำหรับรากด้วย crontab -e


ที่ดี! ฉันเดา -hu จะพอเพียงคำอธิบายที่นี่: explainshell.com/explain?cmd=sudo+-Hiu
rubo77
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.