LoginSignup
2
0

More than 3 years have passed since last update.

【Rails】古いデータベースが影響してエラーが出た話

Posted at

概要

以前作成したRailsアプリを削除して、再び同じ名前で同様のアプリ作成しました。
そしてrails db:migrate実行後、ActiveRecord::PendingMigrationErrorが発生した。

結論から言うと、過去アプリのデータベースが残っており
作成したアプリ上のdb/migrateディレクトリ内のファイルをコマンドdb:migrateにて反映させようとした際、ファイルのバージョンが異なるためエラーが発生しました。
2021-03-17 13.20.47.png

開発環境

・データベース:PostgreSQL
・railsのバージョン:6.1.3
・PC:macbook pro

エラー発生から解決までの流れ

  1. 元々あったrailsアプリを削除する。(rails db:create,rails db migrate実行済み)
  2. 元々あったrailsアプリと同じ名前のrailsアプリを再び作成する。(rails db:create実行済み)
  3. rails db:migrateを実行後、rails sにてサーバを立ち上げてブラウザを見ると、ActiveRecord::PendingMigrationErrorが発生する。
  4. rails db:versionを実行すると、terminal上のファイルとアプリmigrationファイル(db/migrate)のバージョンが異なる。
  5. rails db:resetを実行してrails db:migrateを行うと、問題なくアプリケーションを実行できる。
    また、rails db:versionにてファイルを確認すると、terminal上とrailsアプリのmigrationファイルが一致していることが確認できた。
  6. rails db:migrateを行ってアプリを起動してみると、問題なく動作した。 スクリーンショット 2021-03-17 12.22.31.png

エラーが発生した原因

原因は私の理解不足によるもので、アプリファイルを削除すると一緒にデータベースも消すことができると思っていたためです。
(アプリファイルとデータベースは、同一の場所にあると思っていた)
実際は、下記ディレクトリにデータベースが保存されています。
また、データベース削除とversion確認コマンドは、下記になります。

PostgreSQL:… /usr/local/var/postgres 内
MySQL:… /usr/local/var/mysql 内

データベース削除:rails db:reset (データベース内の情報は消えるので注意!)
データベースversion確認:rails db:version

最後に

正直なところ、データベースについてまだまだわかっていない点がたくさんあります。
もし間違っている点等がある場合、ご指摘頂けると大変ありがたいです。
最後まで読んで頂きありがとうございました。

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0