我正在尝试对系统上的pg_restore
命令进行故障排除。我已经安装了Postgresapp,并且在PATH中包含了它的二进制文件。psql
和pg_dump
等命令似乎工作正常,运行which pg_restore
给予预期的结果。
$ which pg_restore
/Applications/Postgres.app/Contents/MacOS/bin/pg_restore
问题是pg_restore
看起来什么都不做。当我在终端运行它时,没有输出,无论是到控制台还是到logs。无论我传入什么参数,包括--verbose
开关,都是如此。运行它确实会导致pg_restore进程出现在我的活动监视器中,但这个进程不使用任何CPU。除此之外,什么都不会发生。
还有其他人看过这个问题吗?你有什么让pg_restore
工作的建议吗?
4条答案
按热度按时间kzipqqlq1#
我想我知道了。
我运行的命令在用户名后面包含了一个额外的换行符。
就像,我在尝试执行这个
而不是这个
由于某种原因,额外的linebreak会把事情弄得一团糟。一旦我删除了它,pg_restore就能正常工作了。
lbsnaicq2#
我从an answer to another question那里得到了提示;
-f
选项并不执行您可能认为它执行的操作(或者无论如何,我认为它执行的操作😅),即使您使用的是“自定义”格式转储(即,不是像|
或>
那样随shell重定向提供的转储)。pg_restore -f filename.dump
-等待来自STDIN的一系列命令,恢复到filename.dump
中的数据库pg_restore -d database filename.dump
-恢复filename.dump
到database
.出于某种原因,我认为自定义转储包含数据库名称,因此您根本不需要提供它。
f0brbegy3#
我也无缘无故地卡住了,我从
pg_restore -U seed -h localhost -p 5432 -f dump.backup -C --verbose
换成了pg_restore -d seed -U seed -h localhost -p 5432 < dump.backup
,效果很好。如果这能帮到什么人。
relj7zay4#
有时如果你有长时间运行的查询,你需要停止它,这样pg_restore就不会卡住。
运行此脚本:
https://www.sqlprostudio.com/blog/8-终止-取消-长时间运行的postgres-查询#:~:text=终止%20所有%20查询,在%20特殊%20情况下%20使用。