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即使我通过了flag ,也似乎将表复制到了架构中--table="staging.planet_osm_polygon"。为什么不将其复制到架构staging


没有--table参数到psql,这可能是问题#2的原因
dezso 2013年

我正在使用@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哦,我没注意到!!我想它一定会一直复制到public架构中
Nyxynyx

这个问题是因为的pgsql /目录不存在,你必须创建在/ var / lib中/ pgsql的这项工作对我来说..亲切的问候海勒姆
海勒姆·沃克

Answers:


26

试试这个:Re:无法将目录更改为“ / root”

显然,您是从root帐户执行“ su postgres”的,因此您仍位于root的主目录中。最好执行“ su-postgres”以确保您已获取所有postgres帐户的环境。读“ man su”可能会对您有所帮助。


两次要求输入密码是否正常?再次键入密码不会掩盖它。
Nyxynyx

1
可能是因为您正在执行两项操作:1. pg_dump -h localhost“ osm” --table“ public.planet_osm_polygon” 2. psql -h localhost“ test” --table“ staging.planet_osm_polygon”
Ela

4
sudo的替代方案:sudo -Hiu postgres
Max

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'

注意-Hiufor sudo或使用su - postgres

您也可以将其放在cronjob中以与 crontab -e

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.