我是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并正在工作。
答案 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;