Postgres db не работает на Heroku - PullRequest
0 голосов
/ 08 мая 2018

Я потратил несколько часов, чтобы понять, как настроить и запустить мою базу данных. Я создал новое приложение rails и хотел развернуть его на heroku. Я следовал инструкциям из heroku (чтобы переключиться с sqlite3 -> postgresql), но он просто не работает.

Это в моем файле database.yml:

default: &default
  adapter: postgresql
  pool: 5
  timeout: 5000

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test

production:
  <<: *default
  database: myapp_production
  url: <%= ENV['DATABASE_URL'] %>

Я не могу создать или заполнить данные в базе данных. Иногда он выполняет db: migrate, но даже тогда он ничего не создает. Вот что я получаю при беге:

heroku run rake db:create

FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.

У кого-нибудь есть идеи, как это решить? Я больше не имею понятия ...

Спасибо!

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

По умолчанию вам не нужно создавать БД на heroku. Просто запустите heroku run rails db:migrate, а все остальное будет обработано самой heroku.

Также ваш database.yml должен быть изменен на следующий для Production env.

production:
  <<: *default
  database: myapp_production
  username: myapp
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

Также вашему приложению rails по умолчанию назначается Postgres addon. Вы можете проверить это, выполнив команду heroku addons в консоли.

Источник -

  1. Руководство по началу работы с Heroku
  2. Руководство по дополнениям Heroku Postgres
0 голосов
/ 09 мая 2018

Согласно данной трассировке стека, похоже, что вы пытаетесь создать базу данных на heroku, которая, в свою очередь, выдает ошибку Permission Denied.

Во-первых, вам не нужно запускать

heroku run rake db:create

Вместо запуска

heroku run rake db:migrate

и это должно перенести миграцию, которая идет вниз.

Для проверки текущего состояния миграций выполните следующую команду:

heroku run rake db:migrate:status

Другой пункт, который вы упомянули:

-> Я не могу создать или заполнить данные в базе данных Как уже упоминалось выше, вы не можете создать базу данных, поскольку heroku делает это за вас. Для заполнения данных в базе данных выполните следующую команду:

heroku run rake db:seed
0 голосов
/ 08 мая 2018

Вы не можете создать базу данных на Heroku с помощью db: create (вы также не можете ее удалить). Ваша база данных создается при добавлении дополнения (например, Heroku Postgres). Вы можете только мигрировать и сеять. И если вы хотите начать все сначала, вы можете использовать pg: reset (вместо drop и create)

Итак, правильная последовательность должна быть:

  • добавить дополнение Heroku (например, Heroku Postgres). Дополнения находятся здесь: https://elements.heroku.com/addons.
  • rake db: migrate
  • rake db: seed

если вы хотите начать сначала

  • rake pg: сброс
  • rake db: migrate
  • rake db: seed

Из документации Heroku: https://devcenter.heroku.com/articles/heroku-postgresql

Пользователь PostgreSQL, которому назначена ваша база данных, не имеет разрешения на создание или удаление баз данных. Чтобы удалить и восстановить базу данных, используйте pg: reset.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...