Ruby脚本执行SQL时加载redshift_adapter失败求助
这个错误提示的核心原因很直接:ActiveRecord 本身并没有内置 Redshift 数据库的适配器,必须依赖第三方 gem 来提供支持。我给你梳理几个关键的排查步骤:
第一步:确认是否安装了正确的 Redshift 适配器 gem
你需要在项目中添加activerecord-redshift-adapter这个 gem。如果是用 Bundler 管理依赖,先在Gemfile里加上这一行:gem 'activerecord-redshift-adapter'然后执行
bundle install完成安装。如果不需要 Bundler,直接用gem install activerecord-redshift-adapter安装即可。第二步:检查
database.yml里的适配器配置
确保你的config/database.yml中,Redshift 数据库的适配器字段写的是redshift,别拼错成其他(比如redshift_adapter或者拼写错误)。示例配置大概是这样:production: adapter: redshift host: your-redshift-host database: your-db-name username: your-username password: your-password port: 5439第三步:验证 Ruby 版本与 gem 版本的兼容性
你用的是 Ruby 2.4.3,这个版本相对比较老,有些新版本的activerecord-redshift-adapter可能不再支持它。如果安装最新版后还是报错,可以尝试指定一个兼容 Ruby 2.4 的旧版本,比如在 Gemfile 里写:gem 'activerecord-redshift-adapter', '~> 6.1'(这个版本是经过验证可以兼容 Ruby 2.4.x 的,你可以根据实际情况调整)
第四步:手动引入适配器(如果需要)
有时候在脚本中,ActiveRecord 可能不会自动加载第三方适配器,你可以在脚本开头手动加上:require 'activerecord-redshift-adapter'确保在初始化 ActiveRecord 连接之前执行这行代码。
第五步:确认 rbenv 环境的正确性
检查当前终端是否切换到了 Ruby 2.4.3 的环境(用ruby -v验证),并且 gem 是安装在这个版本下的(用gem list activerecord-redshift-adapter确认)。如果之前在其他 Ruby 版本下安装过 gem,切换版本后需要重新安装。
按照这些步骤逐一排查,应该能解决适配器加载失败的问题。
内容的提问来源于stack exchange,提问作者Makoto Taguchi

