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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

データベース

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

Q&A

解決済

1回答

998閲覧

db:migrateでエラーが出る

keisuke_okazaki

総合スコア5

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

データベース

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

0グッド

0クリップ

投稿2020/07/12 12:27

編集2020/07/12 14:17

分からないこと、解決したいこと

rails db:migrate をすると以下のエラーが出る為解決したい。

== 20200710063612 CreateQuestions: migrating ================================== -- create_table(:questions) rails aborted! StandardError: An error has occurred, all later migrations canceled: Index name 'index_questions_on_group_id' on table 'questions' already exists /Users/okazakikeisuke/projects/self-analysis/db/migrate/20200710063612_create_questions.rb:3:in `change' /Users/okazakikeisuke/projects/self-analysis/bin/rails:9:in `require' /Users/okazakikeisuke/projects/self-analysis/bin/rails:9:in `<top (required)>' /Users/okazakikeisuke/projects/self-analysis/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Caused by: ArgumentError: Index name 'index_questions_on_group_id' on table 'questions' already exists /Users/okazakikeisuke/projects/self-analysis/db/migrate/20200710063612_create_questions.rb:3:in `change' /Users/okazakikeisuke/projects/self-analysis/bin/rails:9:in `require' /Users/okazakikeisuke/projects/self-analysis/bin/rails:9:in `<top (required)>' /Users/okazakikeisuke/projects/self-analysis/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace)

以前は正常にrails db:migrate ができていたのだが、本番環境でdb:migrateができなかった為ローカルで再度確認してみたところこのようなエラーが出した。

該当するコード

class CreateQuestions < ActiveRecord::Migration[5.0] def change create_table :questions do |t| t.string :content t.references :group, foreign_key: true t.timestamps end end end
class CreateGroups < ActiveRecord::Migration[5.0] def change create_table :groups do |t| t.string :file t.timestamps end end end
class DeviseCreateUsers < ActiveRecord::Migration[5.0] def change create_table :users do |t| t.string :name, null: false t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" t.string :reset_password_token t.datetime :reset_password_sent_at t.datetime :remember_created_at t.timestamps null: false end add_index :users, :name, unique: true add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true end end

rails db:migrate:status の結果になります。

Status Migration ID Migration Name -------------------------------------------------- up 20200603063609 Devise create users up 20200605052910 Create answers up 20200609074008 Create questions users up 20200709081938 Create groups down 20200710063612 Create questions

様々な記事を調べてみたのですが、解決することができずに困っております。
解決策が分かる方がおられましたら、アドバイスなどいただけますと嬉しく思います。

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

  • rails 2.5.1
  • mysql

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

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

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

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

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

Cojiro

2020/07/12 13:59

既にquestionsテーブルを作成している可能性がありますが、 それは調査しましたか? あと、rails db:migrate:statusを実行した結果を載せてください。
keisuke_okazaki

2020/07/12 14:15

questionテーブルの作成をしているかの確認ですが、シークエルプロで確認したところ存在している状況なのですが、一度削除しないといけないと言うことになりますでしょうか? もしよろしければ教えていただきたいです。 rails db:migrate:statusの結果も載せるように編集させていただきます。
guest

回答1

0

ベストアンサー

シークエルプロで確認したところ存在している
down 20200710063612 Create questions

これが原因ですね。

ロールバックもできないですよね?
ロールバックができれば一番いいです。ローカルも本番でロールバックで対応できます。

bash

1rails db:rollback

おそらくロールバックしても、questionsテーブルは消えないと思うので、

bash

1rails db:migrate:reset

を実行して再度作り直すのがいいと思います。
ただデータが全部消えてしまいますので、ご注意ください。

db:migrate:resetは本番環境で使えなかったと思うので、下記のリンクを参考に再作成してください。(環境に依存するかもしれませんので、念のためググって調査した方がいいかも)
本番環境で既に運用が始まって困る場合は、バックアップ等をとってリカバリ手順を明確にした上で実行してください。
データがなくなって困らない場合は、バックアップやリカバリ手順は不要です。

https://qiita.com/wacker8818/items/72d933f036ca0b75d124

投稿2020/07/12 14:39

Cojiro

総合スコア539

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

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

keisuke_okazaki

2020/07/12 15:25

かなりご丁寧に教えてくださりありがとうございました! 本番環境でも記事を参考に行ったところdb:migrateをすることができ、悩んでいたところがやっと解決しました。 ありがとうございます! まず同じテーブルが作成されている可能性を疑うことが必要だったのですね。 勉強になりました。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問