78

我在使用以下命令转储的 linux 服务器上有一个 Postgres 8.4 数据库:

pg_dump --format=c --exclude-table=log --file=/path/to/output my_db

然后我将创建的文件 ftp 到我的本地 Windows 7 机器并尝试使用以下命令将文件恢复到我的本地 Postgres 8.4 实例:

pg_restore --create --exit-on-error --verbose c:\path\to\file

restore 命令生成大量输出,声称它创建了我的数据库,连接到它,然后按预期创建了所有其他表。但是,当我通过 pgAdmin 查看本地计算机上的数据库时,还原的数据库根本不存在。

为了排除故障,我尝试了以下命令:

pg_restore --create --exit-on-error --verbose --host=blahblah --username=no_one c:\path\to\file

当我运行此命令时,即使给出的主机和用户名完全是胡说八道,我仍然可以从命令中获得完全相同的输出而没有任何错误。

有没有人遇到过这种情况或知道导致这种情况的原因是什么?

4

2 回答 2

131

您必须添加一个有效数据库的名称才能初始连接,否则它只会将内容转储到 STDOUT:

pg_restore --create --exit-on-error --verbose --dbname=postgres <backup_file>
于 2011-05-05T16:31:59.140 回答
11

这仍然令人困惑,我试图执行 --dbname 应该是我要创建的数据库的事情。

pg_restore --create --exit-on-error --verbose --dbname=jiradb jiradb.tar

错误的!!

它应该是--dbname=postgres,--create 然后将根据文件中的名称创建真正的数据库。就我而言,我从 tar 备份中恢复了

pg_restore --create --exit-on-error --verbose --dbname=postgres jiradb.tar
于 2018-12-14T19:12:56.977 回答