ruby-on-rails - ActiveRecord::StatementInvalid: PG::ReadOnlySqlTransaction: - 即使取消关注后,Heroku 数据库仍然只读

标签 ruby-on-rails postgresql heroku

我想将数据库从一个应用程序复制到 Heroku 中的另一个应用程序。我有一个索引问题,迫使我使用关注者数据库来执行此操作,然后取消关注。

我的问题是,现在在创建关注者、取消关注并推广它之后,我在尝试写入时遇到错误:

ActiveRecord::StatementInvalid: PG::ReadOnlySqlTransaction: 错误: 无法在只读事务中执行 ALTER TABLE

此外,当我运行: SELECT pg_is_in_recovery(); 我得到了 true

我所做的是:
heroku 插件:创建 heroku-postgresql:standard-4 –follow MAIN_DB_ADDON_NAME -a app-that-follows

heroku pg:unfollow HEROKU_POSTGRESQL_COLOR_URL -a app-that-follows

heroku pg:promote HEROKU_POSTGRESQL_COLOR_URL -a app-that-follows

知道为什么我会收到此错误,更重要的是,如何解决它

谢谢,
乌里

最佳答案

过了一会儿,数据库再次变得可写。我附上从 heroku 支持处得到的答案:

When you unfollowed the primary database, was the follower completely up to date? If the follower has a bunch of built up WAL it can sometimes leave the database in recovery until it is able to ro replay all of the WAL.

事实上,当您执行 pg:info 并拥有关注者数据库时,您可以看到一个 Behind By 字段,显示您的关注者落后了多少次提交。

我的远远落后了,所以花了一段时间才 catch ......

将其添加到 heroku postgres 文档中可能是个好主意

关于ruby-on-rails - ActiveRecord::StatementInvalid: PG::ReadOnlySqlTransaction: - 即使取消关注后,Heroku 数据库仍然只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46422248/

相关文章:

ruby-on-rails - 如何让 ActionController::Live streaming 与 Thin 一起工作?

java - 试图从 Java 解密 attr_encrypted 存储值

ruby-on-rails - 是否可以单独访问bcrypt盐?

postgresql - Postgres : insert random boolean value into field?

ruby-on-rails-3 - Heroku Rails 排队 mongoid

ruby-on-rails - 用 ruby​​ 完成的基于网络的游戏,为我指明了正确的方向

mysql - SQL查询优化与调试

sql - SQL 新手 - 无法获取季度日期输出

ruby-on-rails - Resque/Rails/Heroku: PG::Error: 结果已被清除

ruby-on-rails - 由于安全问题,无法将Rails应用部署到Heroku