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 DATABASEheroku run rails db:environment:set RAILS_ENV=productionheroku run DISABLE_DATABASE_ENVIRONMENT_CHECK=1 rails db:schema:loadheroku run rails db:seedStep 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.ymlvalues 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.