Home » Ruby » How to handle Ruby on Rails error: “Please install the postgresql adapter: `gem install activerecord-postgresql-adapter'”

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

Posted by: admin November 30, 2017 Leave a comment

Questions:

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.

Answers:

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

Questions:
Answers:

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

Questions:
Answers:

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/

Questions:
Answers:

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.

Questions:
Answers:

sudo apt-get install ruby1.8-dev

then…

gem install pg

Worked for me!

Questions:
Answers:

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.

Questions:
Answers:

You can try this

On debian(squeeze):

aptitude install libdbd-pg-ruby

Questions:
Answers:

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.

Questions:
Answers:

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.