結論
- アプリケーションを削除する前にはralis db:dropを該当するアプリケーションディレクトリで実行する必要がある。
- 既にファイルが存在しない、UP状態のマイグレーションファイルが存在する場合はrails db:migrate:resetを実行する必要がある。
環境
Ruby 2.6.5
Rails 6.0.0
発生したエラー
状況:
railsを学習するために同じアプリケーションをもう一度作成する際に発生しました。
一度目のアプリケーションはfinderから直接削除。
具体的には、2つ目のアプリケーションでテーブルを作成し、マイグレートしようとした際に発生しました。
原因:
直接の原因は、前回のアプリケーションのデータベースを削除していなかったことでした。
削除済みのマイグレーションファイルがUP、Nofileの状態で残っており、マイグレートを実行する際にエラーが起きていました。
解決方法:
下記のコードをアプリケーションのディレクトリで実行することで解決できました。Nofileのマイグレーションファイルの削除だけでなく、新しいマイグレーションファイルのマイグレートまで実行できるようです。
$ rails db:migrate:reset
アプリケーションの削除:
アプリケーションの1つ上のディレクトリで、下記のコマンドを実行する。
$ rm -rf アプリ名
終わりに
ruby on railsの仕組みへの理解が浅かったためにレベルの低いミスをしてしまったと反省しています。
学習中もデータベースに起因するエラーが多いので、モデル部分も含めて理解を深めていきたいです。