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

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

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

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

Q&A

解決済

1回答

1324閲覧

Ruby on Rails

ken1203

総合スコア24

Ruby on Rails

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

0グッド

0クリップ

投稿2020/07/26 04:10

編集2020/11/17 03:41

# rails db:migrate を実行すると下記のエラーが出るのですが
意味が理解できなくて困っています。

== 20200726033117 AddDeviseToUsers: migrating =================================
-- change_table(:users)
rails aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Duplicate column name 'email': ALTER TABLE users ADD email varchar(255) DEFAULT '' NOT NULL
/Users//projects/furima_app/db/migrate/20200726033117_add_devise_to_users.rb:7:in block in up' /Users//projects/furima_app/db/migrate/20200726033117_add_devise_to_users.rb:5:in up'
/Users//projects/furima_app/bin/rails:9:in <top (required)>' /Users//projects/furima_app/bin/spring:15:in <top (required)>'
bin/rails:3:in load' bin/rails:3:in <main>'

Caused by:
ActiveRecord::StatementInvalid: Mysql2::Error: Duplicate column name 'email': ALTER TABLE users ADD email varchar(255) DEFAULT '' NOT NULL
/Users//projects/furima_app/db/migrate/20200726033117_add_devise_to_users.rb:7:in block in up' /Users//projects/furima_app/db/migrate/20200726033117_add_devise_to_users.rb:5:in up'
/Users//projects/furima_app/bin/rails:9:in <top (required)>' /Users//projects/furima_app/bin/spring:15:in <top (required)>'
bin/rails:3:in load' bin/rails:3:in <main>'

Caused by:
Mysql2::Error: Duplicate column name 'email'
/Users//projects/furima_app/db/migrate/20200726033117_add_devise_to_users.rb:7:in block in up' /Users//projects/furima_app/db/migrate/20200726033117_add_devise_to_users.rb:5:in up'
/Users//projects/furima_app/bin/rails:9:in <top (required)>' /Users//projects/furima_app/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)

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

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

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

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

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

guest

回答1

0

ベストアンサー

Duplicate column name 'email': とありますから、既に emailがあるのに追加しようとしてエラーになっています。
おそらくはじめにUserを作っておいてあとからDeviseを導入しているのでは?
migration
20200726033117_add_devise_to_users.rb を編集して、既にある項目があったら削除しましょう

投稿2020/07/26 04:21

winterboum

総合スコア23567

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

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

ken1203

2020/07/26 04:41

回答ありがとうございます! migration 20200726033117_add_devise_to_users.rbを削除してからrails db:migrate を実行するとエラーなく実行できました。
winterboum

2020/07/26 04:43

ん〜〜〜 もしかするとそれではDeviseに必要な項目ができていないかも
ken1203

2020/07/26 04:52

#ログイン機能 rails g devise:install config/initializers/devise.rb config/locales/devise.en.yml rails g devise user app/models/user.rb db/migrate/20200726033117_add_devise_create_users.rb test/fixtures/users.yml test/models/user_test.rb rails db:migrate の順番で先程のエラーでした。 db/migrate/20200726033117_add_devise_create_users.rbを削除して rails db:migrate 実行するとエラーがなくなりました。 見直す所としてはどこを見直せれば宜しいでしょうか?? 勉強不足ですいません、、、。
winterboum

2020/07/26 05:01

db/migrate/20200726033117_add_devise_create_users.rbは復旧できない? できないようでしたら rails g devise:install の前のcommitに戻れない? add_devise_create_users.rbとその前にあるであろう usersをcreateしたmigrationと比べて重複している項目を削除してからmigrationです。 ただ、既にmigrationしているからややこしいことになっているかも。 削除した後の db:migarateで実行されたmigrationが有ったらやり方ちと変わります
ken1203

2020/07/26 05:47

回答ありがとうございます! 復旧は出来るのですがdb/migrate/20200726033117_add_devise_create_users.rb を復旧させるとサーバー上で ActiveRecord::PendingMigrationError Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=development となります。 →rails g devise:install の前のcommitに戻れない? 戻り方がわからないです、、、。 createしたmigrationと比べて重複してる項目の削除ですね。 1度試してみます! ご丁寧に説明頂きありがとうございます。
winterboum

2020/07/26 06:30

Migrations are pending.  これは正常な反応です。 「削除した後の db:migarateで実行されたmigrationが有りますか?」 わからなければ rails db:migrate:status の結果を見せてください
ken1203

2020/07/26 11:46

回答ありがとうございます! 「削除した後の db:migarateで実行されたmigrationが有りますか?」 →削除後の migrationはありません。 rails db:migrate:status database: furima_app_development Status Migration ID Migration Name -------------------------------------------------- up 20200726032927 Devise create users ですm(_ _)m
winterboum

2020/07/26 22:24

すると 20200726033117_add_devise_create_users.rb を復活させて、20200726032927と重複しているcolumnをさくじょして db:migrate ですね
ken1203

2020/07/27 08:55

回答ありがとうございます! 重複しているカラムの削除を実行するとターミナル上では下記のようになりました。 == 20200727084408 AddDeviseToUsers: migrating ================================= == 20200727084408 AddDeviseToUsers: migrated (0.0000s) ======================== サーバーでhttp://localhost:3000/ を立ち上げるとエラーなく読み込む事が出来ました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問