結論
標題通りです。
マイグレーションのコードをテストと同時に書いていた際にハマりました。直接コマンドで db:migrate(:reset)
すると schema.rb
を見に行き、schema.rb
の更新作業が走っていない場合には例えば UNIQUE制約 などが変更されません。
DBが空っぽの状態から、一定のデータを CSVインポート によって投入したいという状況のとき、DB を空っぽにする作業を行わないと既存レコードが存在してしまってエラーになるし、かといって bin/rails db:migrate:reset
みたいなのを実行する行を挿入すると冒頭の現象にハマります。