如何处理Ruby on Rails错误:"请安装postgresql适配器:`gem install activerecord-postgresql-adapter'"

use*_*268 60 ruby postgresql activerecord rubygems ruby-on-rails

运行Ruby on Rails(RoR)应用程序或使用ActiveRecord框架的Ruby代码,您会收到错误消息:

请安装postgresql适配器: gem install activerecord-postgresql-adapter

试图运行:

gem install activerecord-postgresql-adapter
Run Code Online (Sandbox Code Playgroud)

也失败了,让你不知所措.

mcr*_*mcr 127

问题不是任何人写的.问题是postgresql数据库适配器的名称是"postgresql",而不是"postgres",尽管GEM的名称是"pg".

database.yml文件中的定义应该包括

  adapter: postgresql
Run Code Online (Sandbox Code Playgroud)

  • 这是可以很容易地修复的东西吗?我的意思是使名称更正并且错误消息适当? (2认同)

小智 10

这是我从Heroku得到的答案,它对我有用(在尝试了不同的pg宝石,适配器以及其他10篇关于此的其他帖子之后)

1)将行:gem'pg'添加到您的Gemfile中.

2)运行命令bundle install将gem安装到您的bundle中.

3)暂存Gemfile和Gemfile.lock更改:git add Gemfile Gemfile.lock

4)提交更改:git commit -m"安装pg gem"

5)重新部署到heroku:git push heroku master


use*_*268 9

这意味着您没有安装新的"pg"postgresql库.这很容易修复:

sudo gem install pg
Run Code Online (Sandbox Code Playgroud)

我(Dov)在网上找到了其他解决方案,其中描述了设置GEM_HOME并将〜/ .gem/ruby​​/vers/bin添加到您的PATH,但它们不起作用.上述解决方案由Mark Mansour在其博客State of Flux上提供:http: //stateofflux.com/2008/7/13/activerecord-postgresql-adapter-in-rails-2-1/

  • 这个对我不起作用......仍在寻找解决方案. (5认同)
  • 我不建议使用sudo安装gem.更好的是,使用Bundler. (2认同)

Cha*_*had 5

还有一个更深层次的隐藏条件也会导致此错误.

如果你有一个本地环境变量DATABASE_URL = postgres:// mehmehmeh set,那么一些gem(我怀疑是Heroku)会让app认为Postgres是必需的,即使它在你的配置中没有任何地方.杀掉那个env变量,你应该没问题.