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界面
- login到https://addons.heroku.com
- search“Heroku Postgres”
- select计划和应用程序
- 添加它
查看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
我的步骤是:
- 我做了一个旧的Redmine应用程序和数据库的备份。
- 我部署了一个新版本的Redmine – 它完美的工作
- 我恢复了旧的Redmine作为一个开发服务器,当我试图访问主网页时出现错误。
我的问题的原因只是在旧的Redmine的config / database.yml错误的用户名