#概要#
以前作成したRailsアプリを削除して、再び同じ名前で同様のアプリ作成しました。
そしてrails db:migrate
実行後、ActiveRecord::PendingMigrationError
が発生した。
結論から言うと、過去アプリのデータベースが残っており
作成したアプリ上のdb/migrateディレクトリ内
のファイルをコマンドdb:migrate
にて反映させようとした際、ファイルのバージョンが異なるためエラーが発生しました。
#開発環境#
・データベース:PostgreSQL
・railsのバージョン:6.1.3
・PC:macbook pro
#エラー発生から解決までの流れ#
- 元々あったrailsアプリを削除する。(rails db:create,rails db migrate実行済み)
- 元々あったrailsアプリと同じ名前のrailsアプリを再び作成する。(rails db:create実行済み)
-
rails db:migrate
を実行後、rails s
にてサーバを立ち上げてブラウザを見ると、ActiveRecord::PendingMigrationError
が発生する。 -
rails db:version
を実行すると、terminal上のファイルとアプリmigrationファイル(db/migrate)のバージョンが異なる。 -
rails db:reset
を実行してrails db:migrate
を行うと、問題なくアプリケーションを実行できる。
また、rails db:version
にてファイルを確認すると、terminal上とrailsアプリのmigrationファイルが一致していることが確認できた。 -
rails db:migrate
を行ってアプリを起動してみると、問題なく動作した。
#エラーが発生した原因#
原因は私の理解不足によるもので、アプリファイルを削除すると一緒にデータベースも消すことができると思っていたためです。
(アプリファイルとデータベースは、同一の場所にあると思っていた)
実際は、下記ディレクトリにデータベースが保存されています。
また、データベース削除とversion確認コマンドは、下記になります。
PostgreSQL:… /usr/local/var/postgres 内
MySQL:… /usr/local/var/mysql 内
データベース削除:rails db:reset
(データベース内の情報は消えるので注意!)
データベースversion確認:rails db:version
#最後に#
正直なところ、データベースについてまだまだわかっていない点がたくさんあります。
もし間違っている点等がある場合、ご指摘頂けると大変ありがたいです。
最後まで読んで頂きありがとうございました。