Rails配置AWS Aurora读写库提示primary_replica未配置报错
Rails多数据库读写分离环境支持说明
Rails Active Record的多数据库读写分离能力不限制运行环境,development、test、production环境均可正常使用,不存在仅支持production环境的限制。
报错根因
你遇到的primary_replica database is not configured报错是YAML配置缩进错误导致的。
YAML对缩进层级敏感度极高,你贴出的数据库配置中,primary和primary_replica没有作为development节点的子项做正确缩进,最终Rails解析配置时,识别到的development节点下没有任何子数据库配置,自然找不到对应的primary_replica连接。
修复步骤
- 修正
config/database.yml的缩进格式,确保primary、primary_replica是development的下一级节点,正确配置示例:
development: primary: host: my-write-db.rds.amazonaws.com username: [username] password: [pw] database: [db] primary_replica: host: my-ro-replica.rds.amazonaws.com username: [username] password: [pw] database: [db] replica: true
注意:YAML文件禁止使用Tab做缩进,统一使用2个空格控制层级,避免解析异常。
- 确认
app/models/application_record.rb的连接配置符合规范,标准写法如下:
class ApplicationRecord < ActiveRecord::Base self.abstract_class = true connects_to database: { writing: :primary, reading: :primary_replica } end
- 完全退出当前Rails服务进程后重新启动,配置修改不会在热重载中生效。
AWS Aurora适配额外提醒
- 确认Aurora写实例、读副本的安全组规则,已经放通Rails服务所在主机的数据库访问端口(默认3306)
- 若使用Aurora集群端点,可直接将集群读写、只读端点对应到primary和primary_replica配置即可,不需要额外做路由适配。
内容的提问来源于stack exchange,提问作者LewlSauce
相关产品推荐
相关产品推荐

