我在使用以下命令恢复早期备份的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"
有人可以帮助我,告诉我这里做错了吗?
答案 0 :(得分:1)
我认为您使用了自定义格式,并将备份发送到普通文本文件。要从文本文件恢复,请使用 psql命令:psql -e -d template1 -f“C:\ Users \ mchan \ Desktop \ MyDB \ DBBackup.backup”请参阅Postgresql社区页面上的post。
使用 psql 命令,如下所示:
psql -e -U username -d databaseName -f "C:\Users\mchan\Desktop\MyDB\DBBackup.backup"
用户名应该是数据库中定义的角色。例如: postgres
如果 psql 命令提示您输入密码而您不知道该用户的密码,请在 pg_hba中将“md5”替换为“trust” “/ data”文件夹下的.conf 文件和重新启动“postgres服务”,以使此更改生效。
完成此更改后, psql 将不会提示输入密码。
有关 psql 及其他选项的更多文档,请参阅psql-doc。