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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

9089閲覧

railsでマイグレーションのstatusのup/downを切り替えたい

teruwa

総合スコア49

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

1クリップ

投稿2016/08/16 22:45

編集2016/08/17 04:03

イメージ説明
こちらbundle exec rake db:migrate:status
で確認したものなのですが、
・不要なので上から2番目の「Create nquiries」と「Rename combinations to targets」をdown状態にし、
・必要な、上から5番目の「Create inquiries」をup状態にしたいです。。。
対処法を教えていただけませんでしょうか、、、
プログラム経験数ヶ月少ししかなく、うまく疑問を表現できているかわかりませんが、どうかよろしくお願いいたします!

「Drop table nquiries」と「Syoukyo1」には二つともに

def change drop_table :nquiries end

を記述してみて
bundle exec rake db:migrate
を実行しているのですが、下記エラーが出てしまったため放置している状態です。。。
== 20160815212528 DropTableNquiries: migrating ================================
-- drop_table(:nquiries)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

エラーコード詳細1
https://teratail.com/questions/44578
エラーコード詳細2
https://teratail.com/questions/44579

すみませんエラーコードが長すぎて文字数制限に引っかかり投稿ができなかったため別の質問としてコードだけ投稿させていただきました、、、
解決し次第消そうと思います、、、

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

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

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

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

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

maisumakun

2016/08/16 23:36

DropTableNquiriesのマイグレーションを流した時に発生するエラーについて、もう少し詳細を書いていただけますか?
guest

回答1

0

ベストアンサー

ログを見ると、ドロップしようとしたテーブルが存在しない、と言うエラーですね。

基本的にマイグレーションは、必ず一方向に流れるものであると考えるのが正しいと思います。
どれかをdown状態にし、どれかをup状態にする、というのはおかしな話で、順方向に進めるときには、必ずup,逆方向に進めるときは必ずdownにしないと、整合性がとれなくなります。(どれをupにしてdownにするかが記述されないので、後から再現できない)

ですから、どこかの段階で行ったマイグレーションを取り消す操作をするならば、選択肢は二つしかありません。
①マイグレーションを削除するなり編集するなりしてから、DBをドロップ(リセット)して、初めからmigrateする(rake db:migrate:reset)か、
②マイグレーションを取り消す操作を行うマイグレーションを追加するかです。

たとえば、
1.Aテーブルをcreate
2.Bテーブルをcreate
3.Aテーブルのカラムを変更
と言うマイグレーションがあったとして、
1.を取り消したいなら、
4.Aテーブルをドロップ
と言うマイグレーションを追加するという事です

で、最後に、あなたの今のプロジェクトのDB状態は、多分、整合性がとれないでいる状態かと思われます。
ですから、現段階では、マイグレーションを全て最終形態のものに直して、DBをリセットしてはじめからやり直す事をお勧めします。

すでにプロジェクトが稼働していて、DBのリセットが行えない場合や、複数のメンバーで開発しており、ソースのバージョン整合性を取る必要があるときは、②を採用した方が良いですが、一人で開発していて、DBをリセットできるのであれば、①を採用した方が見通しが良くて簡単です。

最後に、ログを読む練習をするといいでしょう。
大抵のエラーログは、最初の数行を読めば概要が理解できるはずで、後は、スタックトレースの中に出現する、自分が編集したソースのある行をチェックすれば、問題の詳細が理解できるはずです。
エラーログに使われる英語は、比較的簡単なものがおおいので、単語を調べれば読めるでしょう。

投稿2016/08/19 02:45

rifuch

総合スコア1901

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問