pg_dump出现错误:`致命错误:角色“用户名”不存在`。

22
我有一个名为backupdb的数据库,我想将其导入到我的本地Rails应用程序中,所以我想备份它。
当我运行pg_dump backupdb时,出现以下错误:

pg_dump:[归档程序(db)]连接到数据库“backupdb”失败:致命错误:角色“username”不存在

请问这里出了什么问题。请帮忙解决。
我从电子邮件中下载了该数据库,然后尝试创建备份,以便可以将其导入到我的本地Rails应用程序中。

你确定你使用的是 pg_dump backupdb 而不是 pg_dump dbname > outfile 吗? - HashRocket
我想它可以双向工作。不过即使这样,我仍然遇到了与问题相同的错误。 - Suraj
请参考此答案:https://dev59.com/aHnZa4cB1Zd3GeqPsJzd#20235049 - Mani Deep
1
听起来你正在尝试恢复一个数据库。pg_dump用于将数据库转储到文件中。对于恢复,通常只需将其导入到psql命令中。有些转储格式需要使用pg_restore。但是你没有指定任何凭据,所以它使用当前用户。要么在命令行中添加凭据,要么以postgres用户身份运行该命令。 - jishi
5个回答

23

试试这个方法,它有效!!

$ pg_dump -h localhost -U postgres -Fc mydb > db.dump

3
它是做什么的? - Kim
@Kim 它将会从 dump 文件中转储你的数据库。 - VijayGupta
这只会给我一个“致命错误:角色“postgres”不存在”。 - Monkey Supersonic

4

这个命令将备份完整的数据库

pg_dump -h localhost -U "dbuser" "dbname" -Fc > "pathfilename.backup"

**ex:** pg_dump -h localhost -U mani manidb - Fc > "thamesdb.backup"

如果需要更多的pg_dump格式,请参考这个答案。


这个不起作用,这是我正在尝试的..pg_dump -h localhost -U "postgres" "backupdb" -Fc > "Downloads/backupdb.backup" - Suraj
你得到了什么错误?“postgres”、“backupdb” 不应该用引号括起来。 - Mani Deep

3

您正在给出不存在的“用户名”username。您需要传递一个存在的用户名(postgresql 可能可以)。
添加参数 --username=postgres --password,然后它会要求您输入用户postgres的密码。(如果您的pg_hba.conf中安全设置为信任,则可以省略--password参数)。


就像我说的那样,我只是在执行这个命令:pg_dump backupdb - Suraj
你的第一个参数是数据库名称,去掉“~/”后再尝试一次,然后发布错误信息。 - xyious
它的意思是相同的,pg_dump: [archiver (db)] 连接到数据库 "backupdb" 失败:FATAL: 数据库 "backupdb" 不存在。 - Suraj
好的,我假设你的整个问题是相反的。你已经有了一个转储文件,并且正在尝试将其读入到你的数据库中? - xyious
你有一个数据库,但是当你尝试进行转储时它不存在? - xyious
显示剩余2条评论

1
如果有人在使用Intellij时遇到相同的问题,这里是帮助我解决问题的方法: 在我的情况下,问题是我右键单击了数据源,但您必须打开它并右键单击数据库本身。因此,在下面的图像中,请不要单击localDB。右键单击数据库名称,然后进行转储。 希望这能帮助某些人解决这个令人困惑的UX问题。 :D

enter image description here


1

我曾经遇到过同样的问题,但是在参考文档的同时尝试了不同的命令选项排列组合后,我成功地使用以下命令选项来运行它。我使用的命令是:

pg_dump.exe -h localhost -U postgres -t "shop*" -t "core*" -t "profiles*" -f "path/to/output/dir_or_file" mydbname

何时使用:

选项前缀 选项 参数
-h 主机名 localhost
-U 用户名 postgres
-t 表格 任何以 (shop, core 或 profiles 开头的表格(注:对于我的 Django 应用程序表格)
-f 输出文件 我想保存转储文件的路径
(命令结束) 数据库 mydbname

注意:由于我在计算机上安装了多个版本的 PostgreSQL,因此我必须调用最新的 pg_dump 可执行文件。(仅供参考)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接