rake db:migrate が動作しない 質問する

rake db:migrate が動作しない 質問する

Rails チュートリアルを進めていますが、行き詰まってしまいました。リスト 8.16 から、次の変更を加えました<timestamp>_add_remember_token_to_users.rb

class AddRememberTokenToUsers < ActiveRecord::Migration
  def change
    add_column :users, :remember_token, :string
    add_index  :users, :remember_token
  end
end

ガイドでは、通常どおりに開発およびテスト データベースを更新するように指示されています。

$ bundle exec rake db:migrate
$ bundle exec rake db:test:prepare

*remember_token*のユーザーテストがまだ失敗しているので、ユーザーコマンドライン sqlite3 を使用した dev および tests データベースのテーブル。次のようになります。

sqlite> .schema users
CREATE TABLE "users" (
   "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
   "name" varchar(255), 
   "email" varchar(255), 
   "created_at" datetime NOT NULL, 
   "updated_at" datetime NOT NULL, 
   "password_digest" varchar(255));
CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email");

移行はまだ実行されていないようですが、強制的に実行する方法がありません。

ベストアンサー1

データベース構造を再構築してみてください(警告:すべての DB データが失われます):

rake db:drop:all
rake db:create:all
rake db:migrate

Rails < 4.1 を使用する場合は、テスト データベースを準備することを忘れないでください。

rake db:test:prepare

これはチュートリアルで作業しているため、最も簡単な解決策です。ただし、本番環境または開発中の重要なデータがある場合は、時間をかけて問題を調査する必要があります。この場合、空の移行を作成し、 を実行してrake db:migrateから、移行に手順を追加したため、新しいフィールドが表示されず、それ以上rake db:migrate何も行われない可能性があります。この問題を解決するには、手順をコメント化しchange、 を実行しrake db:rollback、手順のコメントを解除してから、rake db:migrate見逃した手順を適用する必要があります。

おすすめ記事