Ruby on rails db:rake on Rails 4.0.0期间发生迁移错误

Ruby on rails db:rake on Rails 4.0.0期间发生迁移错误,ruby-on-rails,ruby,git,ruby-on-rails-4,Ruby On Rails,Ruby,Git,Ruby On Rails 4,在Rails 4.0.0、ruby 1.9.3p392(2013-02-22修订版39386)[x86_64-darwin10.8.0]和Rake 10.1.1中处理项目 我正在为Rails中的一个类开发一个应用程序,我犯了一个错误并删除了在Git中所做的更改。当我重做项目并运行rake DB迁移时,收到了以下错误消息: Joses-MacBook-Air:crumblr JRV$ rails generate migration CreateHearts Post_id:integer i

在Rails 4.0.0、ruby 1.9.3p392(2013-02-22修订版39386)[x86_64-darwin10.8.0]和Rake 10.1.1中处理项目

我正在为Rails中的一个类开发一个应用程序,我犯了一个错误并删除了在Git中所做的更改。当我重做项目并运行rake DB迁移时,收到了以下错误消息:

Joses-MacBook-Air:crumblr JRV$ rails generate migration CreateHearts Post_id:integer
  invoke  active_record
  create    db/migrate/20140120235500_create_hearts.rb
Joses-MacBook-Air:crumblr JRV$ bundle exec rake db:migrate
==  CreateHearts: migrating ===================================================
-- create_table(:hearts)
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table "hearts" already exists: CREATE TABLE "hearts" ("id" INTEGER        PRIMARY KEY AUTOINCREMENT NOT NULL, "Post_id" integer) /usr/local/rvm/gems/ruby-1.9.3-  p392/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `initialize'
4.0.0/lib/active_record/railties/databases.rake:42:in `block (2 levels) in <top    (required)>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
Joses MacBook Air:crumblr JRV$rails生成迁移CreateHearts Post_id:integer
调用活动记录
create db/migrate/20140102035500\u create\u hearts.rb
Joses MacBook Air:crumblr JRV$bundle exec rake db:migrate
==CreateHearts:正在迁移===================================================
--创建表格(:红心)
雷克流产了!
发生错误,此迁移和所有后续迁移已取消:
SQLite3::SQLException:表“hearts”已存在:创建表“hearts”(“id”INTEGER主键自动递增不为NULL,“Post_id”INTEGER)/usr/local/rvm/gems/ruby-1.9.3-p392/gems/SQLite3-1.3.8/lib/SQLite3/database.rb:91:in`initialize'
4.0.0/lib/active_record/railties/databases.rake:42:in“block(2层)in”
任务:TOP=>db:migrate
(通过使用--trace运行任务查看完整跟踪)

如何摆脱旧的表引用?

您可以使用以下几个命令:

rake db:rollback
将回滚最新的迁移

rake db:rollback STEP=3
允许您回滚一次以上的迁移(本例中为3次)

rake db:reset
将删除数据库,重新创建它并将当前模式加载到其中

如果您想回滚,然后再次迁移回,您可以使用

rake db:migrate:redo STEP=3
回滚3次迁移并重做迁移


您可以使用以下几个命令:

rake db:rollback
将回滚最新的迁移

rake db:rollback STEP=3
允许您回滚一次以上的迁移(本例中为3次)

rake db:reset
将删除数据库,重新创建它并将当前模式加载到其中

如果您想回滚,然后再次迁移回,您可以使用

rake db:migrate:redo STEP=3
回滚3次迁移并重做迁移


你说得不清楚。“旧表引用”是指更新schema.rb以匹配现有数据库中的内容,还是将数据库置于代码库所期望的状态?迁移时是否更改了标识符(时间戳)?数据库应该跟踪上次运行的迁移。您还不清楚。“旧表引用”是指更新schema.rb以匹配现有数据库中的内容,还是将数据库置于代码库所期望的状态?迁移时是否更改了标识符(时间戳)?数据库应该跟踪上次运行的迁移。这些都有帮助,但最终起作用的命令是rake db:reset。问题是它删除了我的帖子,但它们是测试项。还有其他命令,如
rake db:seed
运行
db/seed.rb
文件或
rake db:schema:load
将架构加载到当前数据库中。看看这个链接是否有助于进一步解释:这些都有帮助,但最终起作用的命令是rake db:reset。问题是它删除了我的帖子,但它们是测试项。还有其他命令,如
rake db:seed
运行
db/seed.rb
文件或
rake db:schema:load
将架构加载到当前数据库中。查看此链接是否有助于进一步解释: