How can I attach a database to an app in Heroku? How can I attach a database to an app in Heroku? database database

How can I attach a database to an app in Heroku?


Did you add the database using the app-independent https://postgres.heroku.com/ site? Or did you just create a postgresql database in your Heroku control panel?

If you created your database on https://postgres.heroku.com/, you will not see the database via your heroku pg:info command. What you can do to add your database to your application, however, would be to:

  1. Log into https://postgres.heroku.com/.
  2. Click on the database you want to attach to your application.
  3. Under 'Connection Settings', click the configuration button at the top right.
  4. Then click the 'URL' option.
  5. Copy your database URL, this should be something like "postgres://blah:blah@ec2-23-23-122-88.compute-1.amazonaws.com:5432/omg".
  6. In your application, on the command line, run heroku config:set DATABASE_URL=postgres://blah:blah@ec2-23-23-122-88.compute-1.amazonaws.com:5432/omg

What we did there was assign your database to the DATABASE_URL environment variable in your application. This is the variable that's used by default when you provision databases locally to your application, so theoretically, assigning this value should work just fine for you.


Heroku add-ons may now be attached across applications and multiple times on a single app.

heroku addons:attach ADDON_NAME -a APP_NAME

Source: https://devcenter.heroku.com/changelog-items/646


To know the name of your addon, do:

heroku addons

Source: https://devcenter.heroku.com/articles/managing-add-ons


To get your database that you created at https://postgres.heroku.com/ attached to your actual heroku app that you are working on you can't use any of the pg backup commands and as far as I can tell there is no supported Heroku way of attaching a database to a heroku app.

You can however create a backup of your database using pg_dump and then use pg_restore to populate your new database that is attached to your app:

pg_dump -i -h hostname -p 5432 -U username -F c -b -v -f "backup-filename" database_name

Once that is complete you can populate your new database with:

pg_restore -i -h new_hostname -p 5432 -U new_username -d new_database_name -v "same_backup_filename"

Even if you are upgrading from the "basic plan" to a the "crane plan" you still have to do a backup and restore, but since the db's are already attached to your app you have the advantage of using the heroku backup commands.