Как исправить ошибку «Роль не существует»? - PullRequest
0 голосов
/ 27 мая 2019

Я только что создал новый проект Ruby on rails, используя его, чтобы развернуть его с Heroku

rails new -d postgresql LG_1

Затем я использовал rails s для запуска моего сервера и обнаружил эту ошибку:

role "esteban" does not exist.

Я искал решения в течение часа, но ни одно из них не помогло. Использование createuser просто дает мне ошибку «не существует», и я не очень доволен Rails.

Версии, которые я использую:

Ruby 2.4.4
Rails 5.2.3
Pg (gem) 1.1.4

Вот мой файл database.yml (без 75 строк комментариев):

default: &default
    adapter: postgresql
    encoding: unicode
    host: /var/run/postgresql
    pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
    <<: *default
    database: LG_1_development

test:
     <<: *default
     database: LG_1_test

production:
    <<: *default
    database: LG_1_production
    username: LG_1
    password: <%= ENV['LG_1_DATABASE_PASSWORD'] %>

Я не редактировал этот файл.

РЕДАКТИРОВАТЬ: Я нашел решение. Мне пришлось открыть файл pg_hba.conf и вручную добавить нового пользователя с именем «esteban»

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Полагаю, esteban - это имя пользователя на вашем локальном компьютере, и поскольку вы не устанавливаете определенное имя пользователя и пароль в database.yml для режима development, postgres использует имя пользователя вашего пользователя при попытке открыть соединение с базой данных.

Создать роль esteban в postgres:

# go to psql console under default postgres user
psql postgres 
# create role
create role esteban SUPERUSER LOGIN;
# exit psql
\q

Или установить правильное значение в database.yml, если оно у вас уже есть

0 голосов
/ 27 мая 2019

Вы установили новый Gem для проекта?

Если вы сделали, я думаю, что вы не перенесли базу данных.

Пожалуйста, выполните следующие команды.

$heroku run rake db:migrate

$heroku ps:scale web=1

$heroku ps

$heroku open
...