前提
Rails5
mysql
発生している問題・エラーメッセージ
1.一部のDB操作(rails db:reset 等)を行なった際に下記エラーが発生
rails aborted! ActiveRecord::EnvironmentMismatchError: You are attempting to modify a database that was last run in `test` environment. You are running in `development` environment. If you are sure you want to continue, first set the environment using: bin/rails db:environment:set RAILS_ENV=development
2.エラーの通り「bin/rails db:environment:set RAILS_ENV=development」を実行後、再度db操作をしたところ、各DB操作を行えるようになった
3.ただし、db操作を行うたびに事前に上記コマンドの実行が必要
試したこと・調査した内容
調べた結果、rails5から実装されたDBの誤破壊防止機能であること、ar_internal_metadataテーブルのvalue(操作制限に設定されている環境レベル)が影響していることまでは確認
Rails 5に入ったDB破壊系taskの防止処理について
mysql> select * from ar_internal_metadata; +-------------+-------------+---------------------+---------------------+ | key | value | created_at | updated_at | +-------------+-------------+---------------------+---------------------+ | environment | development | 2021-08-21 11:55:17 | 2021-08-21 11:55:46 | +-------------+-------------+---------------------+---------------------+ 1 row in set (0.00 sec)
上記 development がdb操作により変化している
rails db:migrate 、rails db:seed実行後 → development
rails db:setup、rails db:reset実行後 → test
補足情報
application.rbに変更履歴はなし。
他の問題対応中に、変な環境変数を入れてしまったりした可能性を考えましたが現状不明です。
あなたの回答
tips
プレビュー