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

时间:2014-07-31 01:19:55

标签: postgresql heroku

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

heroku pg:pull HEROKU_POSTGRESQL_IVORY_URL localdb

我收到了错误:

createdb: database creation failed: ERROR:  permission denied to create database

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

createdb: could not connect to database template1: FATAL:  role "root" does not exist

所以,我必须错过一些我无法找到的简单命令。我在Linux上,我安装了Postgres并正在工作。

2 个答案:

答案 0 :(得分:25)

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

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

另一个选择是如果存在这样的Linux用户,则将Linux用户切换到postgres

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

 createdb -U postgres name_of_new_database

答案 1 :(得分:1)

尝试使用:

sudo su - postgres

然后使用:

创建

createdb name_of_db;