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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

解決済

1回答

2062閲覧

カラムを変更した後のマイグレーションファイル

jqk

総合スコア26

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2020/02/19 07:40

編集2020/02/19 08:12

[開発環境]
cloud9, rails5.1.6
元々facebookでの認証機能を実装中に色々エラーが出たので、
ある記事を参考に一旦rails db:migrate:resetsを実行しrails serverを実行した所、次のエラーが出ました。

ActiveRecord::PendingMigrationError Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=development

エラー文の通りbin/rails db:migrate RAILS_ENV=developmentを実行すると下記のエラー文が出ました。

== 20200208142505 RenamePostIdColumnToComments: migrating ===================== -- rename_column(:comments, :post_id, :micropost_id) rails aborted! StandardError: An error has occurred, this and all later migrations canceled: No such column: comments.post_id (以下省略)

この結果から、以前Commentモデルを作成する時に、画像保存用のMicropostと関連付けをする為に
Commentモデルにmicropost_idを作成したかったんですが、間違ってpost_idカラムを作成したので、
その名前を変更する為に新たに作成したmigrationファイルでした。
イメージ説明
その後にCommentモデルのmigrationファイルの内容自体を手動で変えたような気がします。
(大分前なので、あまり覚えていません) 現在↓
イメージ説明
上記のエラー文を受け、Commentモデルの後に作った他のmigrationファイルは反映されているのか気になったので、rails db:migrate:statusを実行下みたら、3つ反映されていませんでした。
[rails db:versionで確認もしています。→Current version: 20200208135438 ]

Status Migration ID Migration Name -------------------------------------------------- up 20200204125235 Devise create users up 20200204134552 Add username to users up 20200205045254 Create relationships up 20200205145538 Add avatar to users up 20200206131444 Create microposts up 20200208135438 Create comments down 20200208142505 Rename post id column to comments down 20200210064310 Create favorites down 20200218065956 Add omniauth to users

この後に,rails consoleComment.columns.map(&:name)を実行し、Commentテーブルのカラムを確認。
["id", "content", "user_id", "micropost_id", "created_at", "updated_at"]
micropost_idになっていました。
Favorite.columns.map(&:name)を実行すると、Favoriteテーブルは見つからないという結果。
→ActiveRecord::StatementInvalid: Could not find table 'favorites' 
ですが、schema.rbを見ると、Favoriteテーブルは存在します。

create_table "favorites", force: :cascade do |t| t.integer "user_id" t.integer "micropost_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["micropost_id"], name: "index_favorites_on_micropost_id" t.index ["user_id", "micropost_id"], name: "index_favorites_on_user_id_and_micropost_id", unique: true t.index ["user_id"], name: "index_favorites_on_user_id" end

これらはどうなっているのでしょうか。
Rename post id column to commentsというmigrationファイルを手動で消去して、
raile db:migrateを実行しようと思っているのですが、何かまずい気がします。
何かご教授頂けたら幸いです。

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

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

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

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

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

jqk

2020/02/19 08:13

ご指摘ありがとうございます!
guest

回答1

0

自己解決

rm db/migrate/20200208142505_rename_post_id_column_to_comments.rb
実行後、rails db:migrateを実行したら、無事DBは壊れることなく、エラーは解決です。

投稿2020/02/19 11:14

jqk

総合スコア26

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問