Postgres.app:pg_restore挂起

dB'*_*dB' 5 postgresql macos osx-mountain-lion heroku-postgres

我正在尝试pg_restore对我的系统上的命令进行故障排除.我已经安装了Postgresapp,我已将其二进制文件包含在我的PATH中.命令如psql和,pg_dump似乎工作正常,并运行which pg_restore给出预期的结果.

$ which pg_restore
/Applications/Postgres.app/Contents/MacOS/bin/pg_restore
Run Code Online (Sandbox Code Playgroud)

问题是pg_restore似乎没有做任何事情.当我在终端中运行它时,不会打印输出,也不会打印到控制台或日志.无论我传递什么参数,包括--verbose开关,都是如此.运行它会导致pg_restore进程出现在我的活动监视器中,但此进程不使用任何CPU.除此之外,一切都没有发生.

还有其他人看过这个问题吗?你pg_restore对上班有什么建议吗?

3wo*_*ant 20

我从另一个问题的回答中得到了提示;-f即使您使用的是“自定义”格式转储(即不是您通过 shell 重定向提供的转储,例如 或 ),该选项也不会执行您可能认为它会执行的操作(或者我认为它会执行|的操作>) 。

\n
    \n
  • 不正确的 \xe2\x9d\x8c: pg_restore -f filename.dump\xe2\x80\x93 等待来自 STDIN 的一系列命令,恢复到数据库filename.dump
  • \n
  • 更正 \xe2\x9c\x85: pg_restore -d database filename.dump\xe2\x80\x93 恢复filename.dumpdatabase.
  • \n
\n

我认为出于某种原因,自定义转储包含数据库名称,因此您根本不需要提供它。

\n


dB'*_*dB' 10

我想我明白了.

我运行的命令包括用户名后面的额外换行符.

就像在,我试图执行这个

pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myusername
-d mydb latest.dump
Run Code Online (Sandbox Code Playgroud)

而不是这个

pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myusername -d mydb latest.dump
Run Code Online (Sandbox Code Playgroud)

由于某种原因,额外的线路突然出现问题.一旦我删除它pg_restore工作正常.