Ruby on Rails: Change database from SQLite to PostgreSQL.

TechNotes by Abby
2 min readNov 22, 2022

--

As a junior developer, i discovered that Heroku does not support the SQLite database just as I was deploying my application. If you're lucky, you might have known this already and so you set up your application using a PostgreSQL database from the beginning using the command below:

rails new appName --database=postgresql

However, if you're like me, you've probably been in this situation. And no, you dont need to delete everything and start afresh. All you need to do is reconfigure just a few things. So lets get into it.

1. Edit the Gemfile.

The first thing you need to do, is remove the sqlite gem from the gemfile. Replace that with the gem “pg”. This is what your file should look like:

next, go to your terminal and run: `bundle install`. This should remove the sqlite gem and add the pg (postgresql) gem.

bundle install

2. Edit config/database.yml file

By default, the database is configured as a sqlite database. This is what your file looks like:

default: &default
adapter: sqlite3
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000

development:
<<: *default
database: db/development.sqlite3

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: db/test.sqlite3

production:
<<: *default
database: db/production.sqlite3

Now, edit the database.yml file to look something like this:

default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: postgres #username you provided when installing postgresql. By default its postgres(if you did not provide any)
password: xxxx #password you provided when installing postgresql

development:
<<: *default
database: hello_rails_development #name of your database

test:
<<: *default
database: hello_rails_test #name of your database

production:
<<: *default
database: Hello_production
username: Hello
password: <%= ENV["FRIENDLIST_DATABASE_PASSWORD"] %>

3. Create the database.

Finally, create database by running the following command:

rails db:create

This should create your database, and you're good to go.

Its literally that simple!

--

--

TechNotes by Abby

Student at Michigan State University; writing about all things tech!