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

Ruby on-RailsRubyPostgresqlActiverecordRubygems

Ruby on-Rails Problem Overview


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

Trying to run:

gem install activerecord-postgresql-adapter

also fails, leaving you at a loss.

Ruby on-Rails Solutions


Solution 1 - Ruby on-Rails

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

Solution 2 - Ruby on-Rails

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

Solution 3 - Ruby on-Rails

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/

Solution 4 - Ruby on-Rails

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.

Solution 5 - Ruby on-Rails

You can try this

On debian(squeeze):

aptitude install libdbd-pg-ruby

Solution 6 - Ruby on-Rails

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.

Solution 7 - Ruby on-Rails

sudo apt-get install ruby1.8-dev

then...

gem install pg

Worked for me!

Solution 8 - Ruby on-Rails

I did a little roundup of the current state of Ruby + PostgreSQL database drivers on http://railsonpostgresql.com/2009/09/04/rails-postgresql-and-database-drivers">railsonpostgresql.com</a>;; I think sudo gem install pg is probably the one you want.

Solution 9 - Ruby on-Rails

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser71268View Question on Stackoverflow
Solution 1 - Ruby on-RailsmcrView Answer on Stackoverflow
Solution 2 - Ruby on-RailsjstreebinView Answer on Stackoverflow
Solution 3 - Ruby on-Railsuser71268View Answer on Stackoverflow
Solution 4 - Ruby on-RailsChadView Answer on Stackoverflow
Solution 5 - Ruby on-RailsDaniel134View Answer on Stackoverflow
Solution 6 - Ruby on-RailsDougView Answer on Stackoverflow
Solution 7 - Ruby on-RailsKurtBView Answer on Stackoverflow
Solution 8 - Ruby on-RailstomcopelandView Answer on Stackoverflow
Solution 9 - Ruby on-RailsViet PhamView Answer on Stackoverflow