I'm working on a Ruby on Rails 3 webapp on Heroku. How do I empty the database?
18 Answers
To drop the database, if you are using SHARED_DATABASE_URL
:
$ heroku pg:reset DATABASE_URL
Now to recreate the database with nothing in it:
$ heroku run rake db:migrate
To populate the database with your seed data:
$ heroku run rake db:seed
---OR---
You can combine the last two (migrate & seed) into one action by executing this:
$ heroku run rake db:setup
Edit 2014-04-18: rake db:setup
doesn't work with Rails 4, it fails with a Couldn't create database error
.
Edit 2014-10-09: You can use rake db:setup
with Rails 4. It does give you a Couldn't create database
error (because the database was already created using the heroku pg:reset
command). But it also loads your database schema and your seeds after the error message.
You can do this with pretty much any rake command, but there are exceptions. For example, db:reset
doesn't work via heroku run rake
. You have to use pg:reset
instead.
More information can be found in Heroku's documentation:
-
when yous say `your see data` what do you mean? is there a way I can add default data into the DB? – Jan 27 '11 at 20:26
-
I'm using heroku free account and it tells me that i am not the owner of the DB – Jan 27 '11 at 20:36
-
@Abra: I meant 'seed data'. Also, db:drop doesn't work in heroku. Corrected instructions to use the proper beginning command. – Shaun Jan 27 '11 at 21:12
-
'Seed data' is data you have set up to be placed in your database for testing. It's usually defined in db/seeds.rb – Shaun Jan 27 '11 at 21:40
-
23Thank you. Actually, "heroku pg:reset --db SHARED_DATABASE_URL" did the trick. But you got me going in the right direction. – Jay Godse Mar 17 '11 at 22:17
-
5@JayGodse Heroku now says `SHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE` – Phil Oct 18 '11 at 09:40
-
6Actually you should be checking in your schema.rb and you should use: rake db:schema:load – Amala Dec 02 '11 at 23:06
-
1DATABASE_URL will generally work more than SHARED_DATABASE_URL. – quinn Sep 13 '12 at 21:15
-
19They have changed it again now is `heroku pg:reset DATABASE` – Haris Krajina Jan 23 '13 at 23:48
-
9To save a couple of seconds of time, use `heroku pg:reset DATABASE --confirm appname` – GangstaGraham Jun 08 '13 at 06:08
-
3For the sake of completeness: To get the value for DATABASE run `heroku pg:info` – lambinator Aug 21 '13 at 05:51
-
1`rake db:setup` seems disallowed now - you'll need to run `migrate` and `seed` separately instead. – Scott Fister Oct 07 '13 at 18:56
-
They have changed it again. The command that worked for me now is `heroku pg:reset DATABASE_URL` – Alan David Garcia Apr 07 '14 at 01:46
-
`heroku run rake db:migrate db:seed` that is guaranteed to work just like `rake db:setup` used to work. You can chain commands like this to save time. – aaron-coding Dec 05 '14 at 00:31
-
you can also try to reset DB using this gem https://github.com/igorkasyanchuk/rails_db, in each table view you can truncate table, or you can truncate DB using SQL – Igor Kasyanchuk Oct 28 '15 at 21:36
-
@AlanDavidGarcia It didn't change, it's just that the answer is misleading. The `DATABASE` should actually be `
`, which is a placeholder for the database name. The default database is named `DATABASE_URL` which you can see if you run `heroku pg:info`, but you can actually add more databases if you like, and manage them separately. – Franklin Yu Jan 28 '17 at 22:04 -
1Thank you! Only needed `heroku pg:reset` and then follow the prompts on my end. – guero64 May 24 '22 at 12:35
-
As of 2022 (only a couple more weeks to go before free goes away) @guero64 is correct – J.R. Bob Dobbs Oct 31 '22 at 03:20
Heroku has deprecated the --db
option now, so now use:
heroku pg:reset DATABASE_URL --confirm {the name of your app}
It's a little confusing because you use the literal text SHARED_DATABASE
but where I have written {the name of your app}
substitute the name of your app. For example, if your app is called my_great_app then you use:
heroku pg:reset DATABASE_URL --confirm my_great_app

- 13,266
- 14
- 86
- 134
-
3if you just paste skip the bit after (and including) the -- heroku will tell you what to type.. – baash05 Feb 01 '12 at 22:48
-
useful command to get the name of your postgres database on heroku : heroku config | grep HEROKU_POSTGRESQL – zero_cool Jun 07 '14 at 00:50
-
"you use the literal text SHARED_DATABASE" ? You are using DATABASE_URL in your code samples. Do you mean that? – Michael Durrant Jun 17 '14 at 10:30
-
Nope. I was referring to the other answer's use of the words `SHARED_DATABASE` – Dave Sag Jun 17 '14 at 14:34
To drop the database:
$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP
To recreate the database:
$ heroku run rake db:migrate
To seed the database:
$ heroku run rake db:seed
**Final step
$ heroku restart

- 10,936
- 8
- 64
- 79

- 1,436
- 1
- 11
- 20
-
4I prefer this answer over any else's. This works perfectly in my scenario on Heroku, I believe it is highly under voted! – Jonathan Mar 24 '12 at 16:04
-
It might be because heroku changed the syntax of these commands recently. – George Yacoub Mar 24 '12 at 19:49
-
1
-
The current, ie. 2017 way to do this is:
heroku pg:reset DATABASE
https://devcenter.heroku.com/articles/heroku-postgresql#pg-reset

- 47,086
- 25
- 151
- 148
-
1Agreed. The current way to re-populate the database is: `heroku run rake db:migrate db:seed` – aaron-coding Dec 05 '14 at 00:33
Now the command is
heroku pg:reset DATABASE_URL --confirm your_app_name
this way you can specify which app's db you want to reset. Then you can run
heroku run rake db:migrate
heroku run rake db:seed
or direct for both above commands
heroku run rake db:setup
And now final step to restart your app
heroku restart

- 502
- 7
- 11
-
1Restarting might not be necessary but good point giving it a mention. – Francisco Quintero Oct 21 '18 at 20:04
I contacted Heroku support, and they confirmed that it is a bug with the latest gem (I am using heroku-2.26.2)
Charlie - we are aware of this issue with the 'heroku' gem and are working to fix it.
Here's the issue if you care to follow-along - https://github.com/heroku/heroku/issues/356
Downgrading to an earlier version of the 'heroku' gem should help. I've been using v2.25.0 for most of today without issue.
Downgrade with the following commands:
gem uninstall heroku
gem install heroku --version 2.25.0
If you already have multiple gems installed, you may be presented with:
Select gem to uninstall: 1. heroku-2.25.0 2. heroku-2.26.2 3. All versions
Just uninstall #2 and rerun the command. Joy!

- 442
- 5
- 10
-
1All the gems have been deprecated now, you need to get rid of them and install the Heroku toolbelt. https://toolbelt.heroku.com/ – Ghoti Sep 09 '13 at 21:52
The complete answer is (for users with multi-db):
heroku pg:info - which outputs
=== HEROKU_POSTGRESQL_RED <-- this is DB
Plan Basic
Status available
heroku pg:reset HEROKU_POSTGRESQL_RED --confirm app_name
More information found in: https://devcenter.heroku.com/articles/heroku-postgresql

- 4,329
- 20
- 25
Now it's also possible to reset the database through their web interface.
Go to dashboard.heroku.com select your app and then you'll find the database under the add-ons category, click on it and then you can reset the database.

- 10,018
- 4
- 52
- 67
Today the command
heroku pg:reset --db SHARED_DATABASE_URL
not working for shared plans, I'm resolve using
heroku pg:reset SHARED_DATABASE

- 257
- 1
- 5
- 8
Check your heroku version. I just updated mine to 2.29.0, as follows:
heroku --version
#=> heroku-gem/2.29.0 (x86_64-linux) ruby/1.9.3
Now you can run:
heroku pg:reset DATABASE --confirm YOUR_APP_NAME
Then create your database and seed it in a single command:
heroku run rake db:setup
Now restart and try your app:
heroku restart
heroku open

- 9,460
- 1
- 57
- 54
Login to your DB using
heroku pg:psql
and type the following commands:
drop schema public cascade;
create schema public;

- 5,848
- 4
- 43
- 31
In case you prefer to use Heroku Web-site:
- Go to https://postgres.heroku.com/databases
- Select the database you want to reset
- Click on a settings button in the right upper corner
- Click "Reset Database" as shown below:
- type in "RESET" and press ok

- 2,195
- 1
- 27
- 22
This is what worked for me.
1.clear db.
heroku pg:reset --app YOUR_APP
After running that you will have to type in your app name again to confirm.
2.migrate db to recreate.
heroku run rake db:migrate --app YOUR_APP
3.add seed data to db.
heroku run rake db:seed --app YOUR_APP

- 3,641
- 4
- 33
- 43
Assuming you want to reset your PostgreSQL database and set it back up, use:
heroku apps
to list your applications on Heroku. Find the name of your current application (application_name
). Then run
heroku config | grep POSTGRESQL
to get the name of your databases. An example could be
HEROKU_POSTGRESQL_WHITE_URL
Finally, given application_name
and database_url
, you should run
heroku pg:reset `database_url` --confirm `application_name`
heroku run rake db:migrate
heroku restart

- 10,874
- 13
- 63
- 106
If you are logged in from the console, this will do the job in the latest heroku toolbelt,
heroku pg:reset --confirm database-name

- 670
- 6
- 18
Best solution for you issue will be
heroku pg:reset -r heroku --confirm your_heroku_app_name
--confirm your_heroku_app_name
is not required, but terminal always ask me do that command.
After that command you will be have pure db, without structure and stuff, after that you can run
heroku run rake db:schema:load -r heroku
or
heroku run rake db:migrate -r heroku

- 151
- 1
- 6