Rails服务启动但无法为reading角色建立AR连接的解决问询
解决Rails服务器报
No connection pool for 'ActiveRecord::Base' found for the 'reading' role错误 问题核心
重装PostgreSQL和pg gem后,Rails控制台可正常连接数据库,但服务器抛出连接池错误,根源是读写分离配置的角色映射不匹配或数据库权限/连接参数异常。
解决方案步骤
1. 修正config/database.yml配置
如果不需要读写分离,直接简化为单数据库配置(删除primary_replica节点):
default: &default adapter: postgresql encoding: unicode pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> development: <<: *default database: myapp_development test: <<: *default database: myapp_test production: <<: *default database: myapp_production username: myapp password: <%= ENV["MYAPP_DATABASE_PASSWORD"] %>
如果需要保留读写分离,确保primary_replica节点配置正确且关联reading角色:
production: primary: <<: *default database: myapp_production username: myapp password: <%= ENV["MYAPP_DATABASE_PASSWORD"] %> primary_replica: <<: *default database: myapp_production username: myapp_readonly password: <%= ENV["MYAPP_DATABASE_REPLICA_PASSWORD"] %> replica: true
2. 配置ActiveRecord角色映射
在config/application.rb或对应环境配置文件(如config/environments/production.rb)中添加角色映射规则:
# 启用读写分离的角色映射 config.active_record.role_mappings = { reading: :primary_replica } # 可选:启用自动读写分离中间件 config.active_record.database_selector = { delay: 2.seconds } config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
3. 重新安装pg gem(指定正确的pg_config路径)
先找到当前PostgreSQL的pg_config位置:
which pg_config
(Homebrew新版默认路径为/opt/homebrew/bin/pg_config,旧版可能在/usr/local/bin,但你的/usr/local为空,大概率是前者)
然后重新安装pg gem:
gem uninstall pg gem install pg -- --with-pg-config=/opt/homebrew/bin/pg_config
4. 验证PostgreSQL数据库与用户权限
登录PostgreSQL控制台检查:
psql -U postgres
- 确认目标数据库存在:
\l - 确认数据库用户有连接权限:
GRANT CONNECT ON DATABASE myapp_production TO myapp; -- 如果用读写分离,给只读用户授权 GRANT CONNECT ON DATABASE myapp_production TO myapp_readonly;
5. 清理缓存并重启服务器
# 清理Rails临时文件和缓存 rails tmp:clear # 生产环境额外清理资产缓存 rails assets:clean # 重启服务器(以puma为例) puma restart -C config/puma.rb
内容的提问来源于stack exchange,提问作者Jerome
相关产品推荐
相关产品推荐

