Heroku PG:恢复写入访问被撤销

时间:2014-03-05 13:45:24

标签: postgresql heroku

我的heroku开发计划中有一个Write access revoked,因为我的数据库中有太多行。

以下是我的结果:

$ heroku pg:info
=== HEROKU_POSTGRESQL_WHITE_URL (DATABASE_URL)
Plan:        Dev
Status:      available
Connections: 1
PG Version:  9.2.7
Created:     2013-06-21 13:24 UTC
Data Size:   12.0 MB
Tables:      48
Rows:        10564/10000 (Write access revoked) - refreshing
Fork/Follow: Unsupported
Rollback:    Unsupported
Region:      Europe

从那以后,我删除了一半的行,因为它们是由退化的脚本创建的,而且我在我的开发环境中。我检查了pgadmin并在rails控制台中,看起来实际上删除了行。

如何将write access恢复到我的数据库?我不想升级,因为我通常不需要它。等了2个小时已经没什么变化了。

我读heroku pg:info的确没有快速更新,但我能做些什么?

感谢您的支持

2 个答案:

答案 0 :(得分:12)

对于Starter层(现在称为Hobby层),后台工作人员会定期计算和更新行数,表计数和数据库大小的统计信息。它们可能会滞后几分钟,但通常不会超过5或10。

在清除数据以达到行限制后,写入权限可能需要5-10分钟才能自然恢复。您通常可以通过运行pg:info来加快此过程,这会导致刷新(因此您会看到上面的refreshing)。

预计不会有2个小时。如果你仍然被锁定并且你确定你的行数不足,请在help.heroku.com

打开一张票。

答案 1 :(得分:1)

根据Heroku文档:https://devcenter.heroku.com/articles/heroku-postgres-plans#row-limit-enforcement

当您超出业余爱好层行限制并尝试插入时,您将看到Postgres错误:

permission denied for relation <table name>

使用以下机制强制执行业余爱好层数据库计划的行限制:

  1. 当hobby-dev数据库达到7,000行,或者业余爱好基本数据库达到700万行时,所有者会收到一封警告电子邮件,说明他们接近行限制。

  2. 当数据库超出其行容量时,所有者将收到其他通知。此时,数据库将收到7天的宽限期,以减少记录数量或迁移到另一个计划。

  3. 如果7天后行数仍超过计划容量,则将在数据库上撤消INSERT权限。仍然可以从数据库中读取,更新或删除数据。这可确保用户仍然能够使其数据库符合规范,并保留对其数据的访问权。

  4. 一旦行数再次符合计划限制,INSERT权限将自动恢复到数据库。请注意,数据库大小是异步检查的,因此可能需要几分钟才能恢复权限。

  5. 因此,您很可能必须升级数据库计划