我使用追随者在Heroku上创建了一个新的数据库。当它与主数据库同步时,我取消了追随并将其提升为默认数据库。
看起来一切都正常,但似乎是只读的。现在,当我尝试从控制台保存记录时,出现以下错误:
ActiveRecord::StatementInvalid: PG::Error: ERROR: cannot execute UPDATE in a read-only transaction
有什么办法可以解决这个问题吗?
我使用追随者在Heroku上创建了一个新的数据库。当它与主数据库同步时,我取消了追随并将其提升为默认数据库。
看起来一切都正常,但似乎是只读的。现在,当我尝试从控制台保存记录时,出现以下错误:
ActiveRecord::StatementInvalid: PG::Error: ERROR: cannot execute UPDATE in a read-only transaction
这个副本实际上从未被提升。请查看评论。
你可以通过以下方式确定一个副本是否正在跟随主服务器:
SELECT pg_is_in_recovery();
将返回true。在主服务器上,这不能返回true,因为主服务器处于恢复模式的唯一时间是在它启动时 - 然后您无法连接到它,因此无法运行该命令。这在9.2和9.3beta版本中是正确的;这可能会在未来版本中发生更改,因此如果您正在阅读此内容并使用新版本,请检查是否有专用函数以检查服务器是否为副本。
SELECT pg_is_in_recovery();
报告了什么? - Craig Ringerset transaction read write;
来解决这个问题吗?我也无法创建一个 follower,因为我一直收到这个错误信息:An error was encountered when contacting the add-on partner to create heroku-postgresql:standard-2: The database you are attempting to follow is still too new. Please try again later.
- Surya