You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 6.1多数据库配置下PgHero连接池未找到错误求助

问题:PgHero在Rails多数据库主从配置下随机崩溃
  • 环境:Ruby on Rails 6.1,配置了主从分离的多数据库架构,通过自定义CustomDatabaseResolver实现数据库负载分配,代码如下:
class CustomDatabaseResolver < ActiveRecord::Middleware::DatabaseSelector::Resolver
  def read_from_primary?
    super || rand(2).zero?
  end
end
  • 问题现象:PgHero仪表盘会随机崩溃,抛出以下错误:
ActiveRecord::ConnectionNotEstablished
No connection pool for 'PgHero::Connection::Database337600' found.
  • 尝试过的解决方案:尝试强制PgHero控制器使用主库,但未成功,实现代码如下:

    # config/initializers/pghero.rb
    Rails.application.reloader.to_prepare do
      PgHero::HomeController.send :include, WriterDbRoleExecutor
    end
    
    # app/controllers/concerns/writer_db_role_executor.rb
    module WriterDbRoleExecutor
      extend ActiveSupport::Concern
    
      included do
        around_action { |_controller, action| ApplicationRecord.force_writer_db_role(&action) }
      end
    end
    
  • 补充说明:相同的强制主库方法对Blazer gem有效,代码如下:

    Rails.application.reloader.to_prepare do
      Blazer::BaseController.send :include, WriterDbRoleExecutor
    end
    

内容的提问来源于stack exchange,提问作者DenisKo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:13:27