我使用追随者在 Heroku 上创建了一个新数据库。在它落后 0 次提交之后,我取消关注主数据库并将其提升为默认值。
似乎工作正常,但看起来是只读的。当我现在尝试从控制台获取记录时,我看到了这个错误
ActiveRecord::StatementInvalid: PG::Error: ERROR: cannot execute UPDATE in a read-only transaction
知道如何解决这个问题吗?
我使用追随者在 Heroku 上创建了一个新数据库。在它落后 0 次提交之后,我取消关注主数据库并将其提升为默认值。
似乎工作正常,但看起来是只读的。当我现在尝试从控制台获取记录时,我看到了这个错误
ActiveRecord::StatementInvalid: PG::Error: ERROR: cannot execute UPDATE in a read-only transaction
知道如何解决这个问题吗?
复制品从未真正得到提升。看评论。
您可以判断副本何时跟随主服务器,因为:
SELECT pg_is_in_recovery();
将返回真。这不能在主服务器中返回 true,因为主服务器唯一可以恢复的时间是它仍在启动时 - 然后您无法连接到它,因此您无法运行该命令。从 9.2 和 9.3beta 开始就是这样;这可能会在未来的版本中发生变化,因此如果您正在阅读本文并在较新的版本中检查用于检查服务器是否为副本的专用功能。
在某些情况下,您需要在活动记录控制台上明确设置写入模式。尝试运行:
readwrite!
这可能与 Heroku 控制台没有直接关系,但我想我会在这里为任何需要这个特定解决方案的人发帖。