PGError:错误:权限被拒绝(当使用Heroku时)

我最近经历了这里所述的数据库迁移过程:

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

现在,我在日志中看到了许多错误:

PGError:错误:权限被拒绝的关系

任何想法,我应该做什么来解决它?

我有一个类似的问题,但其根本原因是我的应用程序指向旧的开发数据库超过了10,000行的限制。

虽然我创build了一个新的基本数据库,并支持所有的东西,但应用程序仍然指向旧的开发数据库。

heroku pg:info

检查看到的行:10300/10000(那么你有一个问题)

你将需要

1)创build新的数据库更多的行(基本或“生产”的 – > 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 pg:promote BIG_DB_NAME

总是可以利用:

heroku维护:on(在更新时禁用应用程序)

heroku维护:closures

heroku pg:info(查看状态)

如果这是您可能想要查看的问题: https : //devcenter.heroku.com/articles/heroku-postgres-starter-tier https://devcenter.heroku.com/articles/migrating-from-shared-database -to-的Heroku-的Postgres

更新:在这种情况下,阿什顿的答案是非常明确的。 如果您从searchPostgreSQL错误消息或问题中发现了这个错误,但是没有使用Heroku,请查找更可能适用于您的情况的其他问题。


猜测,你连接的PostgreSQL用户ID不是你的表的所有者,你还没有发出任何明确的GRANT语句来授予它们访问权。 在迁移的时候,如果没有看到你所运行的什么,那么很难说更多 – 而Heroku无论如何也隐藏了很多内部的东西。

让我们来看看目前的情况。 尝试使用psql连接并运行:

 \dp the_problem_table 

并显示报告的权限。 同时显示的结果是:

 SHOW current_user; 

psql运行,并从应用程序内部作为SQL查询运行。

编辑您的问题以添加该信息以及您获得的错误消息的完整文本

根据Ashton的答案,从Dev(10k行数限制)升级到Basic(10M行数限制)

检查数据库行超出限制

 heroku pg:info 

禁用应用程序和工作人员以确保在数据库升级过程中没有更改数

 heroku maintenance:on heroku ps:scale worker=0 

如果你没有pgbackups

 heroku addons:add pgbackups 

备份数据库并获取备份ID

 heroku pgbackups:capture 

添加数据库与networking界面

  1. login到https://addons.heroku.com
  2. search“Heroku Postgres”
  3. select计划和应用程序
  4. 添加它

查看herokuconfiguration,你应该看到新的数据库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

非常有价值的知道。

您可以通过terminal进入psql控制台,连接设置列在您的应用程序的heroku仪表板上!

我的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的config / database.yml错误的用户名