关于postgresql:Postgres。 角色“根”不存在。 当试图pg:从Heroku拉数据库

Postgres. role “root” does not exist. When trying to pg:pull database from Heroku

我是Postgres和Heroku的新手。 我试图从Heroku中提取数据库,但我遗漏了一些简单的东西。 我做了:

1
heroku pg:pull HEROKU_POSTGRESQL_IVORY_URL localdb

我收到了错误:

1
createdb: DATABASE creation failed: ERROR:  permission denied TO CREATE DATABASE

然后我尝试了同样的"sudo"。 我得到了:

1
createdb: could NOT CONNECT TO DATABASE template1: FATAL:  ROLE"root" does NOT exist

所以,我必须缺少一些我找不到的简单命令。 我在Linux上,我安装了Postgres并正在工作。


createdb是SQL语句CREATE DATABASE的包装器,因此需要连接到数据库。

默认情况下,所有Postgres命令行工具都尝试使用当前操作系统用户连接到数据库。 由于错误消息表明数据库中没有名为root的用户。 因此,您需要传递Postgres超级用户的名称,以便createdb能够连接。 此用户通常命名为postgres

另一种选择是将Linux用户切换到postgres(如果存在这样的Linux用户)。

我不知道Heroku,我不知道你是如何开始的createdb,但传递用户名的参数是-U(对于所有Postgres命令行程序)。 所以你需要

1
 createdb -U postgres name_of_new_database


尝试使用:

sudo su - postgres

然后使用以下创建:

createdb name_of_db;