同様の質問が多く寄せられています。しかし、私の状況は少し違うと思います。Heroku (本番環境で sqlite3 を使用) からローカル マシン (PostgreSQL を使用) にデータベースをプルしました。当時、製品データベースにはデータがありませんでした。
その後、テストのためにデータベースの移行を行っていません。これで、開発データベースにいくつかのフィールドができました。ただし、テスト コンソールにアクセスして (ユーザー テーブルを参照して) 何を持っているかを確認すると、User.count は 0 を返しますが、dev では 2 ユーザーを返します。
そのdb:migrate RAILS_ENV=test
ため、エラー メッセージも成功メッセージも表示されませんでした。私はそれが成功したと思い、テストデータベースをチェックして、それらの2人のユーザーがいて、まだ何もないかどうかを確認しました. それから私は試しbundle exec rake db:test:prepare
ました。これが出力でした
**You have 4 pending migrations:
20120415210441 CreateUsers
20120418064930 AddIndexToUsersEmail
20120419034627 AddPasswordDigestToUsers
20120504031144 AddRememberTokenToUsers
Run `rake db:migrate` to update your database then try again.**
解決策は何ですか?
編集: 参考までに: 私は Windows を使用しており、 rake db:migrateも実行し ていますが、このエラーが発生しました。
$ rake db:migrate
== CreateUsers: migrating ====================================================
-- create_table(:users)
rake aborted!
An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: table "users" already exists: CREATE TABLE "users" ("id"
INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "email" varcha
(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
Tasks: TOP => db:migrate
(See full trace by running task with --trace)