未経験からエンジニア 奮闘記

未経験からエンジニアに自由に生きる途中

MENU

本番環境でDBがDROPできない

環境

aws docker rails rds(postgres)

dropを実行したらエラーが

RAILS_ENV=production bundle exec rake db:drop


rake aborted!
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

対処方法

指示どうりに、DISABLE_DATABASE_ENVIRONMENT_CHECK=1をつける

RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop

原因を調べる

本番環境でのDBをDROPを防止する機能らしい

qiita.com

確認すると確かにある

sample_db-> \dt;
                 リレーションの一覧
 スキーマ |         名前         |    型    | 所有者
----------+----------------------+----------+--------
 public   | ar_internal_metadata | テーブル | root

環境情報を保持しているみたい

sample_db=> select * from ar_internal_metadata;
     key     |   value    |         created_at         |         updated_at
-------------+------------+----------------------------+----------------------------
 environment | production | 2020-12-11 00:30:28.810193 | 2020-12-11 00:30:28.810193
(1 行)

よくわからんな。笑 とりあえず対処法は先の通り