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

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

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

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

MySQL

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

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Ruby on Rails

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

データベース

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

Q&A

受付中

[rails] devise導入中のエラー

nista
nista

総合スコア14

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

MySQL

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

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Ruby on Rails

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

データベース

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

1回答

0グッド

1クリップ

532閲覧

投稿2019/10/02 08:38

編集2019/10/03 06:45

質問内容

devise導入中に下記のエラーが出ました。
gemをbundle installしたのち、rails g devise:installを実行。
その後、rails g devise userを実行したのち、rake db:migrateを実行した時に発現したエラーです。
解決策を教示いただきたいです。。。。。

エラーメッセージ

rake aborted!

StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Table 'freemarket_sample_50c_development.users' doesn't exist: ALTER TABLE users ADD email varchar(255) DEFAULT '' NOT NULL

/projects/freemarket_sample_50c/db/migrate/20191002055101_add_devise_to_users.rb:7:in block in up' /projects/freemarket_sample_50c/db/migrate/20191002055101_add_devise_to_users.rb:5:in up'

Caused by:

ActiveRecord::StatementInvalid: Mysql2::Error: Table 'freemarket_sample_50c_development.users' doesn't exist: ALTER TABLE users ADD email varchar(255) DEFAULT '' NOT NULL
/projects/freemarket_sample_50c/db/migrate/20191002055101_add_devise_to_users.rb:7:in block in up' /projects/freemarket_sample_50c/db/migrate/20191002055101_add_devise_to_users.rb:5:in up'

Caused by:

Mysql2::Error: Table 'freemarket_sample_50c_development.users' doesn't exist
/projects/freemarket_sample_50c/db/migrate/20191002055101_add_devise_to_users.rb:7:in block in up' /projects/freemarket_sample_50c/db/migrate/20191002055101_add_devise_to_users.rb:5:in up'
Tasks: TOP => db:migrate

20191002055101_add_devise_to_users.rb

# frozen_string_literal: true class AddDeviseToUsers < ActiveRecord::Migration[5.2] def self.up change_table :users do |t| ## Database authenticatable t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" ## Recoverable t.string :reset_password_token t.datetime :reset_password_sent_at ## Rememberable t.datetime :remember_created_at ## Trackable # t.integer :sign_in_count, default: 0, null: false # t.datetime :current_sign_in_at # t.datetime :last_sign_in_at # t.string :current_sign_in_ip # t.string :last_sign_in_ip ## Confirmable # t.string :confirmation_token # t.datetime :confirmed_at # t.datetime :confirmation_sent_at # t.string :unconfirmed_email # Only if using reconfirmable ## Lockable # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts # t.string :unlock_token # Only if unlock strategy is :email or :both # t.datetime :locked_at # Uncomment below if timestamps were not included in your original model. # t.timestamps null: false end add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true # add_index :users, :confirmation_token, unique: true # add_index :users, :unlock_token, unique: true end def self.down # By default, we don't want to make any assumption about how to roll back a migration when your # model already existed. Please edit below which fields you would like to remove in this migration. raise ActiveRecord::IrreversibleMigration end end

試したこと

rake db:reset → 再度 rake db:migrate

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

Mugheart

2019/10/08 00:28

$ rails g devise user を実行したら *_add_devise_to_users.rb が生成されたということですか? 手元で実行してみると *_devise_create_users.rb というマイグレーションファイルが生成されます。 バージョンや環境違いかと思って多少調べてみましたが、 どれも *_devise_create_users.rb ファイルが生成されているようです。 加えて中身も若干異なるんですが心当たりはありますか?

回答1

1

なぜそうなっちゃってるのか、は??ですが。。。

def self.up change_table :users do |t| ## Database authenticatable t.string :email, null: false, default: ""

この記法は create_table のものです。change を create に変えて試して下さい
###
deviseする前にUserを作っておくという手順だったかなぁ、、、

投稿2019/10/07 20:43

編集2019/10/07 20:44
winterboum

総合スコア22579

kawasaki4563👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

yutaro_0529

2020/10/16 15:17

今更ですが、 同じエラーに陥っています。 私の場合、手順としてrails db userをしていて、 後からdeviseをbundle installして同じ問題が発生してつまずいています。。。 先に作ったuserをrm -rf db/migrate/ファイル名でrollbackしてdownの状態にして実行削除して、 bundle exec gem uninstall deviseしてもダメでした。。。
winterboum

2020/10/16 23:48

「先に作ったuserをrm -rf db/migrate/ファイル名でrollbackして」ですか? fileをrmしたらrolbackできないと思いますが

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

MySQL

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

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Ruby on Rails

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

データベース

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