Rails7多数据库配置下Blazer3.0.0执行查询报ActiveRecord::ConnectionNotEstablished
Rails7多数据库环境下Blazer 3.0.0执行查询报错
ActiveRecord::ConnectionNotEstablished的解决办法 问题描述
在Rails7应用中部署Blazer 3.0.0,采用多数据库配置,可正常创建、保存查询,但执行任意查询时触发ActiveRecord::ConnectionNotEstablished错误。
解决步骤
指定Blazer使用的数据库连接
Blazer默认绑定Rails主数据库连接,多库环境下需显式配置目标连接。在config/initializers/blazer.rb中添加:# 方式1:通过对应数据库的抽象模型指定 Blazer.connection = SecondaryRecord.connection # SecondaryRecord是你定义的副库抽象模型 # 方式2:直接从database.yml指定数据库名称建立连接 Blazer.connection = ActiveRecord::Base.establish_connection(:secondary).connection确保多数据库连接初始化完成
检查config/database.yml的多库配置是否正确,同时在初始化阶段提前建立所有数据库连接:- 先定义副库抽象模型(示例):
class SecondaryRecord < ApplicationRecord self.abstract_class = true connects_to database: { writing: :secondary, reading: :secondary_replica } end - 创建
config/initializers/establish_connections.rb文件,添加连接初始化代码:ActiveRecord::Base.connection SecondaryRecord.connection
- 先定义副库抽象模型(示例):
确认Blazer适配器配置匹配
根据你的数据库类型,在blazer.rb中指定适配器:Blazer.adapter = "postgres" # 可选值:mysql2、sqlite3等验证数据库用户权限
确保Blazer使用的数据库账号拥有SELECT等查询权限,避免因权限问题触发连接类错误提示。
内容的提问来源于stack exchange,提问作者channa ly
相关产品推荐
相关产品推荐

