PGError:错误:关系被拒绝(使用Heroku时)

sut*_*ree 74 database postgresql permissions heroku

我最近经历了数据库迁移过程,如下所述:

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

现在我在日志中看到了许多错误,如下所示:

PGError:错误:关系被拒绝

关于我应该怎么做才能修复它的任何想法?

Ash*_*mas 160

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

虽然我创建了一个新的基本数据库并备份了所有内容,但应用程序仍指向旧的开发数据库.

heroku pg:info
Run Code Online (Sandbox Code Playgroud)

检查看行:10300/10000(那你有问题)

您将需要

1)创建具有更多行的新数据库(基本或"生产" - > Heroku似乎强制升级以赚取更多钱errrrrr)

2)使用pgbackups备份旧数据库:heroku pg:backups:capture SMALL_DB_NAME

3)将备份恢复到新数据库:( heroku pg:backups:restore BACKUP_ID BIG_DB_NAME有关详细信息,请参阅下面的链接)

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


Cra*_*ger 11

更新:阿什顿的答案在这种情况下指出它,这是非常具体的Heroku.如果你发现这个从PostgreSQL的错误信息或问题的搜索,但都没有使用Heroku的,请认准更有可能适用于您的情况的其他问题.


猜测,您连接的PostgreSQL用户ID不是表的所有者,并且您没有发出任何明确的GRANT语句来授予它访问权限.如果没有看到你在迁移时的确切内容,很难说更多 - 而且Heroku无论如何都隐藏了许多内部结构.

让我们弄清楚目前的情况.尝试连接psql并运行:

\dp the_problem_table
Run Code Online (Sandbox Code Playgroud)

并显示报告的permisions.还显示结果:

SHOW current_user;
Run Code Online (Sandbox Code Playgroud)

psql应用程序内部作为SQL查询运行时运行.

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


tom*_*bak 9

基于Ashton从Dev(10k行限制)升级到Basic(10M行限制)的答案的步骤

检查数据库行超出限制

heroku pg:info
Run Code Online (Sandbox Code Playgroud)

禁用应用程序和工作程序以确保在数据库升级期间不更改数据库

heroku maintenance:on
heroku ps:scale worker=0
Run Code Online (Sandbox Code Playgroud)

如果你没有pgbackups

heroku addons:add pgbackups
Run Code Online (Sandbox Code Playgroud)

备份数据库并获取备份ID

heroku pg:backups:capture
Run Code Online (Sandbox Code Playgroud)

使用Web界面添加数据库

  1. 登录https://addons.heroku.com
  2. 搜索"Heroku Postgres"
  3. 选择计划和申请
  4. 添加它

查看heroku配置,您应该看到新的db URL

heroku config --remote heroku
Run Code Online (Sandbox Code Playgroud)

将备份还原到新数据库

heroku pg:backups:restore BACKUP_ID NEW_DB_URL
Run Code Online (Sandbox Code Playgroud)

更改DATABASE_URL

heroku pg:promote NEW_DB_URL
Run Code Online (Sandbox Code Playgroud)

启用应用和工作人员

heroku maintenance:off
heroku ps:scale worker=1
Run Code Online (Sandbox Code Playgroud)


man*_*h_s 5

删除多余的行后,您将无法立即获得插入权限.在这种情况下,删除额外的行,然后运行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
Run Code Online (Sandbox Code Playgroud)