db:在Rails 4.0.0上的rake期间迁移错误

时间:2014-01-21 00:08:21

标签: ruby-on-rails ruby git ruby-on-rails-4

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

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

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)

如何摆脱旧表引用?

1 个答案:

答案 0 :(得分:4)

您可以使用几个命令:

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

rake db:rollback STEP=3允许您通过多次迁移(本例中为3)进行回滚

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

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

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

http://guides.rubyonrails.org/migrations.html