1

我在恢复 PostgreSQL 数据库时遇到问题,我使用以下命令提前备份了该数据库:

pg_dump -i -h localhost -p 5432 -U Mark -F c -b -v -f "C:\Users\mchan\Desktop\MyDB\DBBackup.backup" mydb

现在,当我尝试在(另一台机器)上恢复此数据库备份时,出现以下错误:

pg_restore: [archiver] directory "C:\Users\mark\Desktop\MCHANBackups\DBBackup.backup" does not appear to be a valid archive ("toc.dat" does not exist)

下面是我用来恢复备份的命令:

pg_restore -i -h localhost -p 5432 -U Mark -d mydb -v "C:\Users\mark\Desktop\MCHANBackups\DBBackup.backup"

有人可以帮助我并告诉我我在这里做错了什么吗?

4

1 回答 1

2

我认为您使用了自定义格式,并且备份被发送到普通文本文件。要从文本文件恢复,请使用 psql 命令: psql -e -d template1 -f "C:\Users\mchan\Desktop\MyDB\DBBackup.backup" 请参阅Postgresql 社区页面上的这篇文章。

使用psql命令如下:

psql -e -U username -d databaseName -f "C:\Users\mchan\Desktop\MyDB\DBBackup.backup"

用户名应该是在数据库中定义的角色。例如:postgres

如果psql命令提示输入密码并且您不知道用户的密码,请将“/data”文件夹下的pg_hba.conf文件中的“md5”替换为“trust”并重新启动“postgres 服务”以进行此更改影响。

完成此更改后,psql将不会提示输入密码。

有关psql和其他选项的更多文档,请参阅psql-doc

于 2013-09-10T12:48:21.963 回答