質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

4669閲覧

ActiveRecord::PendingMigrationErrorの解決方法について

ayachika

総合スコア36

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2018/10/24 12:18

編集2018/10/24 22:15

railsを四か月学習中の初心者です。現在オリジナルアプリを作成しています。

railstutorialの13章2.1において、以下のような指示があり、その通りに以下のコードをターミナルに入力したところ、エラーが出ました。
データベースを削除しようとしたことによるエラーだと思われます。

###以下rails tutorialから引用
本項では、ユーザーのプロフィール画面 (show.html.erb) でそのユーザーのマイクロポストを表示させたり、これまでに投稿した総数も表示させたりしていきます。とはいえ、今回必要となるアイデアのほとんどは、10.3で実装したユーザーを表示する部分と似ています。

演習で既にマイクロポストをいくつか作成していた場合は、一度データベースをリセットし、サンプルデータを再生成しておいてください。

$ rails db:migrate:reset

これを実行したところ、エラーが発生しサイトに入れなくなりました。

###エラー内容

ActiveRecord::PendingMigrationError Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=development Extracted source (around line #573): 571 572 573 574 575 576 # Raises <tt>ActiveRecord::PendingMigrationError</tt> error if any migrations are pending. def check_pending!(connection = Base.connection) raise ActiveRecord::PendingMigrationError if ActiveRecord::Migrator.needs_migration?(connection) end def load_schema_if_pending!

###試したが効かなかった対処法
①エラー内容にあるとおりの

bin/rails db:migrate RAILS_ENV=development

②ネット上でこれをすれば解決したと投稿されていた以下のコード

rake db:migrate:reset

その他サーバーをいったん終了させたりなどしてみましたが、エラーから抜け出せません。
ご存知の方、ご指導いただけると幸いです。

(追記)troch様回答に対して
rails db:migrate:status
を実行したところ、以下のような表示がされました。

database: /home/ec2-user/environment/kyounogohan/db/development.sqlite3 Status Migration ID Migration Name -------------------------------------------------- up 20180830222526 Create posts up 20180906214631 Create comments up 20180907133239 Create tags up 20180907133339 Create post tag relations up 20180913112749 Add picture to posts up 20180916141115 Create users up 20180917023819 Add index to users email up 20180917060516 Add password digest to users up 20180925102403 Add remember digest to users down 20181010060333 Add user id to posts down 20181016133724 Create favorites

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

troch

2018/10/24 12:57

$ rails db:migrate:statusと打ったらどのように表示されますか?
ayachika

2018/10/24 22:13

database: /home/ec2-user/environment/kyounogohan/db/development.sqlite3 Status Migration ID Migration Name -------------------------------------------------- up 20180830222526 Create posts up 20180906214631 Create comments up 20180907133239 Create tags up 20180907133339 Create post tag relations up 20180913112749 Add picture to posts up 20180916141115 Create users up 20180917023819 Add index to users email up 20180917060516 Add password digest to users up 20180925102403 Add remember digest to users down 20181010060333 Add user id to posts down 20181016133724 Create favorites
ayachika

2018/10/24 22:16 編集

記事に追記しました!よろしくお願いします。
guest

回答1

0

ベストアンサー

Add User id to postsCreate favoritesという2つのマイグレーションファイルが未実行のように見受けられます。
$ bundle exec rails db:migrateと打ってみても直らないでしょうか?

投稿2018/10/24 23:09

troch

総合スコア349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

troch

2018/10/24 23:41

これでもしもエラーが出ましたら、マイグレーションファイル自体の書き方が間違っているのかもしれません。 https://teratail.com/questions/74860 ↑のコメント欄に基本的なトラブルシュートの流れが書いてありますので、こちらを参考にしてみてください。
ayachika

2018/10/25 13:16

やはりエラーでした。$ m (master) $ bundle exec rails db:migrate == 20181010060333 AddUserIdToPosts: migrating ================================= -- add_column(:posts, :user_id, :integer) rails aborted! StandardError: An error has occurred, this and all later migrations canceled: SQLite3::SQLException: duplicate column name: user_id: ALTER TABLE "posts" ADD "user_id" integer/usr/local/rvm/gems/ruby-2.4.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:91:in `initialize' /usr/local/rvm/gems/ruby-2.4.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:91:in `new' そちらのサイトを参考に解決してみます!また質問するかもしれませんがよろしくお願いします。
troch

2018/10/25 15:04

postsテーブルに既にuser_idカラムが存在している、というエラー文ですね。。。 20181010060333 AddUserIdToPostsというマイグレーションファイルでuser_idカラムを追加しようとしているが既にそのカラムは存在しているので重複している、という趣旨だと思うのでこのファイルがおかしいのかな…と。 ともかく解決まで頑張ってください!
ayachika

2018/10/26 00:50

ご丁寧にありがとうございます。頑張ります!
ayachika

2018/10/29 10:28

20181010060333のファイルを削除したらエラーが表示されなくなりました!ありがとうございました。マイグレーションの際にuser_idカラムをさらに追加していたようです。
troch

2018/10/29 10:57 編集

よかったです! オリジナルアプリ作成 頑張ってください!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問