为什么pg_restore返回成功,但实际上没有恢复我的数据库



我在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:pathtofile

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

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

pg_restore --create --exit-on-error --verbose --host=blahblah --username=no_one c:pathtofile

当我运行这个命令时,即使给出的主机和用户名是完全没有意义的,我仍然从命令中得到完全相同的输出,没有任何错误。

有没有人遇到过这种情况,或者知道是什么导致了这种情况?

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

pg_restore --create --exit-on-error --verbose --dbname=postgres <backup_file>

这仍然令人困惑,我试图执行这个东西——dbname应该是我想要创建的db。

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

相关内容

  • 没有找到相关文章

最新更新