类似的问题被问了很多。但是,我觉得我的情况有点不同。我从 Heroku(我在 prod 中使用 sqlite3)中提取了一个数据库到我的本地机器(使用 PostgreSQL)。prod db 当时没有任何数据。
在那之后,我没有进行任何数据库迁移来测试。现在我的开发数据库中有几个字段。但是,当我去测试控制台查看我有什么(引用用户表)时,User.count 返回 0,但在开发中返回 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)