結論
heroku上のDBをリセットするには、以下のコマンドを実行する。
ターミナル.
heroku run rails db:migrate:reset DISABLE_DATABASE_ENVIRONMENT_CHECK=1
環境
- rails 6.0.4.4
- ruby 2.6.5
- MySQL 5.6.51
- heroku
heroku runでDBリセットのコマンドを実行
heroku上のDBをリセットしようと以下のコマンドを実行した。
ターミナル.
heroku run rails db:reset
以下のエラーが発生。
ターミナル.
ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' database.
If you are sure you want to continue, run the same command with the environment variable:
DISABLE_DATABASE_ENVIRONMENT_CHECK=1
エラー内容をgoogle翻訳で訳すと以下のようになる。
ターミナル.
ActiveRecord :: ProtectedEnvironmentError:「本番」データベースに対して破壊的なアクションを実行しようとしています。
続行することが確実な場合は、環境変数を使用して同じコマンドを実行します。
DISABLE_DATABASE_ENVIRONMENT_CHECK = 1
「データベースに対して破壊的なアクション」が実行されるので、本当に実行する場合は「DISABLE〜(以下省略)」を使用してください、ということらしい。
「DISABLE〜(以下省略)」を追記してコマンドを実行する。
ターミナル.
heroku run rails db:migrate:reset DISABLE_DATABASE_ENVIRONMENT_CHECK=1
heroku上のDBが予定通りにリセットされ、アプリの挙動も問題なし。
ローカル環境でDBをリセットした後に、本番環境のDBも忘れずにリセットする必要がある。