It's important to note that running this reset will drop any existing data you have in the application
- Step 1:
heroku restart
- Step 2:
heroku pg:reset DATABASE
(no need to change theDATABASE
) - Step 3:
heroku run rake db:migrate
- Step 4:
heroku run rake db:seed
(if you have seed)
One liner
heroku restart; heroku pg:reset DATABASE --confirm APP-NAME; heroku run rake db:migrate
Note 1
Heroku doesn't allow users from using rake db:reset
, rake db:drop
and rake db:create
command. They only allow heroku pg:reset
and rake db:migrate
commands.
More info: https://devcenter.heroku.com/articles/rake
Note 2
If you have more than 1 remote, append --remote [your_remote_name]
like this:
heroku run rake db:migrate --remote dev
(dev
is example remote here)
If you find yourself where you cannot re-run migrations as the code has changed since they were written you can do the following to reload the schema:
heroku pg:reset DATABASE
heroku run rails db:environment:set RAILS_ENV=production
heroku run DISABLE_DATABASE_ENVIRONMENT_CHECK=1 rails db:schema:load
heroku run rails db:seed
Step 2 is honestly new to me but from the limited reading it sets the DB's environment to production so I assume it knows the proper
database.yml
values to load. Either way it's required before step 3 will run and because it is a mutation operation on a prod env database you have to manually allow it via the ENV var.