开发者

How to handle Ruby on Rails error: "Please install the postgresql adapter: `gem install activerecord-postgresql-adapter'"

开发者 https://www.devze.com 2022-12-09 21:59 出处:网络
Running a Ruby on Rails (RoR) app or Ruby code which uses the ActiveRecord framework, you get the error message:

Running a Ruby on Rails (RoR) app or Ruby code which uses the ActiveRecord framework, you get the error message:

Please install the postgresql adapter: gem install activerecord-postgresql-adapter开发者_JS百科

Trying to run:

gem install activerecord-postgresql-adapter

also fails, leaving you at a loss.


The problem is not what anyone wrote. The problem is that the name of the postgresql database adapter is "postgresql", not "postgres", though the name of the GEM is "pg".

The definition in the database.yml file should include

  adapter: postgresql


Here's the answer I got from Heroku and it worked for me (after trying different pg gems, adapters, and everything else on the 10 other posts about this)

1) add the line: gem 'pg' to your Gemfile.

2) Run the command bundle install to install the gem into your bundle.

3) Stage the Gemfile and Gemfile.lock changes: git add Gemfile Gemfile.lock

4) Commit the changes: git commit -m "Install the pg gem"

5) Redeploy to heroku: git push heroku master


This means you don’t have the new ‘pg’ postgresql library installed. This is easily fixed with a bit of:

sudo gem install pg

I (Dov) found other solutions on the web which described setting GEM_HOME and adding ~/.gem/ruby/vers/bin to your PATH, but they didn't work. This solution above was provided by Mark Mansour on his blog State of Flux at: http://stateofflux.com/2008/7/13/activerecord-postgresql-adapter-in-rails-2-1/


There is one more deeply hidden condition that will also cause this error.

If you have a local environment variable DATABASE_URL=postgres://mehmehmeh set, then some gem (I suspect Heroku) causes the app to think that Postgres is required even if it's nowhere in your configs. Kill that env variable and you should be fine.


Check database.yml environment db is correct. If it is postgresql, you might need to change it to refer to mysql2 or whatever db your using for your given environment.


You can try this

On debian(squeeze):

aptitude install libdbd-pg-ruby


sudo apt-get install ruby1.8-dev

then...

gem install pg

Worked for me!


I did a little roundup of the current state of Ruby + PostgreSQL database drivers on railsonpostgresql.com; I think sudo gem install pg is probably the one you want.


While trying out different search results, I installed a bunch. What finally got my environment to stop complaining with this message: "Please install the postgresql adapter: gem install activerecord-postgresql-adapter" was:

  • I removed all gems relating to the adapter such as: sudo gem uninstall activerecord-jdbc-adapter; sudo gem uninstall activerecord-jdbcpostgresql-adapter; sudo gem uninstall activerecord-postgresql-adapter; sudo gem uninstall jdbc-postgres;

  • I also removed references to adapter as followed inside my Gemfile: gem 'activerecord-jdbcpostgresql-adapter'

  • Leave only pg (0.15.1) installed (to check for existence of pg, do "gem list")

Then running "rake db:create" works. So, I guess pg is the latest and works. However, it does not get used when other broken adapter gems are around.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号