这是一个低风险,只是一个实践运行时,我迫切需要这样做,并确认pg_dump的工作是满意的。
我试图使用psql
或pg_restore
将Postgres数据库的副本还原到新数据库。我在Ubuntu 22.04。
作为我通常的用户,rlm
,在~
上,我可以键入dir
并获得来自pg_dump
的apgym.sql
输出。
所以我输入pg_restore -d testRestore -U postgres apgym.sql
并得到:pg_restore: error: input file appears to be a text format dump. Please use psql.
就像好的,我会用psql。我输入它并得到psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: database "rlm" does not exist
--我不理解错误消息,但我将作为Postgres用户再试一次。所以我打字
sudo su postgres
并成为postgres用户。我在与我的psql -d testRestore -f apgym.sql
文件相同的目录中输入apgym.sql
,我得到:
could not change directory to "/home/rlm": Permission denied
psql: error: apgym.sql: No such file or directory
我也不能使用pgAdmin从备份中恢复,它说状态在0.02秒内“失败”。
如何恢复已备份的postgres db?我需要能够做到这一点,以防我的数据被破坏,我想回去。请不要提出其他选择:我想这样做。
如果它可以帮助读者或者将来想要创建自己的pg_dump
输出的人,我用命令pg_dump -h localhost -U postgres -W apGymPostgres > apgym.sql
创建了备份。
发布于 2023-01-30 18:45:37
对我来说,解决办法是绕过这个问题。我未能使psql或pg_restore还原我创建的备份。据推测,因为我创建了一个纯文本pg_dump文件,所以需要使用psql。但我不能让psql起作用。
当我发现一个教程说,如果我使用tar转储文件,那么我就可以使用pg_restore。我能够使用pgAdmin创建一个tar转储文件,然后使用pgAdmin进行类似的恢复。
因此,这不是一个解决方案,使一个纯文本pg转储工作,但它绕过它。
https://askubuntu.com/questions/1452650
复制相似问题