PGError: ошибка: отказано в разрешении для связи (при использовании Heroku)
Я недавно прошел через процесс миграции базы данных, как описано здесь:
https://devcenter.heroku.com/articles/migrating-from-shared-database-to-heroku-postgres
теперь я вижу ряд ошибок в логах вроде этого:
PGError: ошибка: отказано в разрешении для отношения
любые идеи о том, что я должен сделать, чтобы это исправить?
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
добавить БД с веб-интерфейсом
- войти в https://addons.heroku.com
- поиск "Heroku Postgres"
- Выберите план и приложения
- добавить
просмотр 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
- Я сделал резервную копию старого приложения Redmine и базы данных.
- я развернул новую версию Redmine - она работала отлично
- я восстановил старый Redmine в качестве сервера разработки, и я получил ошибку когда я попытался получить доступ к главной веб-странице.
причина моей проблемы была просто в неправильном имени пользователя в старом Redmine конфигурация / база данных.в формате YML