Postgres db не работает на Heroku

Я потратил несколько часов на то, чтобы понять, как запустить мою базу данных. Я создал новое приложение 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.

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

Спасибо!

в панели управления Heroku. Ресурсы -> дополнения. Вы добавили надстройку Heroku Postgres :: Database?

Maxence 08.05.2018 02:05

Да, я добавил аддон Postgres!

crievino 08.05.2018 10:42

Вы выбрали Web Dyno (можно бесплатно) и активировали его?

Maxence 08.05.2018 13:19

Да. Я нашел решение, повторно добавив аддон Postgres на heroku. Теперь нормально работает. Спасибо за вашу помощь!

crievino 09.05.2018 09:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
2 522
3

Ответы 3

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

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

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

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

  • rake pg: сбросить
  • rake db: миграция
  • грабли db: seed

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

The PostgreSQL user your database is assigned doesn’t have permission to create or drop databases. To drop and recreate your database use pg:reset.

Спасибо, я повторно добавил аддон postgres, и теперь он отлично работает! Ваше здоровье

crievino 09.05.2018 09:35

По умолчанию вам не нужно создавать базу данных на 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

Согласно данной трассировке стека, похоже, что вы пытаетесь создать базу данных на 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

Другие вопросы по теме