Подтвердить что ты не робот

Postgres. Роль "корень" не существует. При попытке pg: вытащить базу данных из Heroku

Im новый для 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

Итак, должно быть, мне не хватает некоторых простых команд, которые я не могу найти. Im на Linux, у меня установлен Postgres и работает.

4b9b3361

Ответ 1

createdb представляет собой оболочку вокруг оператора SQL CREATE DATABASE и поэтому он должен подключаться к базе данных.

По умолчанию все средства командной строки Postgres пытаются подключиться к базе данных с использованием текущего пользователя операционной системы. Поскольку сообщение об ошибке указывает, что в базе данных нет пользователя с именем root. Поэтому вам нужно передать имя суперпользователя Postgres, чтобы createdb смог подключиться. Обычно этот пользователь имеет имя postgres.

Другой вариант - переключить пользователя Linux на postgres, если такой пользователь Linux существует.

Я не знаю Heroku, и я не знаю, как вы начали createdb, но параметр для передачи имени пользователя -U (для всех программ командной строки Postgres). Поэтому вам понадобится

 createdb -U postgres name_of_new_database