PGError: ошибка: отказано в разрешении для связи (при использовании Heroku)


Я недавно прошел через процесс миграции базы данных, как описано здесь:

https://devcenter.heroku.com/articles/migrating-from-shared-database-to-heroku-postgres

теперь я вижу ряд ошибок в логах вроде этого:

PGError: ошибка: отказано в разрешении для отношения

любые идеи о том, что я должен сделать, чтобы это исправить?

6 71

6 ответов:

у меня была аналогичная проблема, но основной причиной было то, что мое приложение указывало на старую базу данных dev, которая превысила ее предел в 10 000 строк.

хотя я создал новую базовую БД и сделал резервную копию всего, приложение все еще указывало на старую БД dev.

heroku pg:info

проверьте, чтобы увидеть строки: 10300/10000 (тогда у вас есть проблема)

вам понадобится

1) Создайте новую БД с большим количеством строк (Основные или" производственные " - > Heroku кажется форсирование обновления, чтобы заработать больше денег errrrrr)

2) резервное копирование старой БД с помощью pgbackups:heroku pgbackups:capture SMALL_DB_NAME

3) восстановить резервную копию в новую БД:heroku pgbackups:restore BIG_DB_NAME BACKUP_ID (см. ссылки ниже для более подробной информации)

4) продвигать новую БД в основной для приложения:heroku pg:promote BIG_DB_NAME

всегда можно использовать:

heroku maintenance:on (чтобы отключить приложение во время обновления)


heroku maintenance:off


heroku pg:info (для проверки состояния)

если это проблема, вы можете проверить из: https://devcenter.heroku.com/articles/heroku-postgres-starter-tier https://devcenter.heroku.com/articles/migrating-from-shared-database-to-heroku-postgres

UPDATE: ответ Эштона прибивает его в этой ситуации, что очень характерно для Heroku. Если вы нашли это из поиска сообщений об ошибках или проблемах PostgreSQL, но не используя Heroku, пожалуйста, ищите другие вопросы, которые более вероятно применимы к вашей ситуации.


по предположению, идентификатор пользователя PostgreSQL, с которым вы соединяетесь, не является владельцем ваших таблиц, и вы не выдали никаких явных GRANT заявления, чтобы дать ему доступ к ним. Не видя ровно что вы бежали, когда вы мигрировали трудно сказать больше - и Heroku скрывает многие из внутренних органов в любом случае.

давайте разберемся, какова текущая ситуация. Попробуйте подключиться к psql и работает:

\dp the_problem_table

и показать permisions сообщили. Также покажите результат:

SHOW current_user;

запустить от psql и при запуске в качестве SQL-запроса из вашего приложения.

отредактировать ваш вопрос, чтобы добавить эту информацию и в полный, точный текст сообщения об ошибке вы получаете.

действия, в зависимости от ответа Эштон обновления от разработчика (10к строк предела) к основным (10М строк лимита)

проверьте БД строк превышен предел

heroku pg:info

отключите приложение и работников, чтобы обеспечить отсутствие изменений БД во время обновления БД

heroku maintenance:on
heroku ps:scale worker=0

если у вас нет pgbackups

heroku addons:add pgbackups

резервное копирование базы данных и получить идентификатор резервной копии

heroku pgbackups:capture

добавить БД с веб-интерфейсом

  1. войти в https://addons.heroku.com
  2. поиск "Heroku Postgres"
  3. Выберите план и приложения
  4. добавить

просмотр Heroku config, вы должны увидеть новый URL БД

heroku config --remote heroku

восстановить резервную копию в новую БД

heroku pgbackups:restore NEW_DB_URL BACKUP_ID

изменить DATABASE_URL

heroku pg:promote NEW_DB_URL

включить приложение и работников

heroku maintenance:off
heroku ps:scale worker=1

после удаления дополнительных строк вы не получите права на вставку сразу же. В этом случае удалите лишние строки и просто запустить heroku pg:info после этого. Это позволит обновить привилегии вашей БД и вы получите доступ в течение нескольких минут. Не требуется клонировать существующую БД в новую и устанавливать новую в качестве БД вашего приложения.

$ heroku pg:info

=== HEROKU_POSTGRESQL_BRONZE_URL, DATABASE_URL
Plan:        Hobby-dev
Status:      Available
Connections: 3/20
PG Version:  9.3.6
Created:     2014-03-01 13:47 UTC
Data Size:   1.25 GB
Tables:      4
Rows:        2098/10000 (Write access revoked) - refreshing
Fork/Follow: Unsupported
Rollback:    Unsupported
Add-on:      grinning-busily-5587

Я был в ситуации, когда я превысил лимит количества строк.

этот ответ объяснил, как вывести количество строк в каждой таблице: http://stackoverflow.com/questions/12701711/heroku-row-count-incorrect

очень ценно знать.

вы можете попасть в консоль psql через терминал, настройки подключения перечислены на Heroku dashboard для вашего приложения!

У меня была аналогичная проблема на моем приложении Redmine:

PG::InsufficientPrivilege: ERROR:  permission denied for relation settings
: SELECT  "settings".* FROM "settings"  WHERE "settings"."name" = 'plugin_redmine_wktime' LIMIT 1
мои действия:
  1. Я сделал резервную копию старого приложения Redmine и базы данных.
  2. я развернул новую версию Redmine - она работала отлично
  3. я восстановил старый Redmine в качестве сервера разработки, и я получил ошибку когда я попытался получить доступ к главной веб-странице.

причина моей проблемы была просто в неправильном имени пользователя в старом Redmine конфигурация / база данных.в формате YML