Ruby on rails:rake migrate down似乎没有用

时间:2011-07-12 17:39:11

标签: ruby-on-rails ruby-on-rails-3 rake rails-migrations

我生成了一个迁移,它将名为encrypted_pa​​ssword的列添加到我的数据库中的users表中。这是由rails使用以下命令自动生成的:

rails generate migration add_password_to_users encrypted_password:string

class AddPasswordToUsers < ActiveRecord::Migration
  def self.up
    add_column :users, :encrypted_password, :string
  end

  def self.down
    remove_column :users, :encrypted_password
  end
end 

我正在尝试删除并重新创建users_table中的encrypted_pa​​ssword列,所以这就是我正在做的事情:

rake db:migrate:down VERSION=20110712172013(这就是迁移的时间戳) rake db:migrate (我也试过rake db:migrate:redo VERSION=20110712172013

我收到此错误: SQLite3 :: SQLException:重复列名:encrypted_pa​​ssword:ALTER TABLE“users”ADD“encrypted_pa​​ssword”varchar(255)

因此,出于某种原因,向下迁移并不是真正删除列。任何人都知道为什么?

2 个答案:

答案 0 :(得分:2)

您的语法对于向下迁移是正确的。不知道为什么它不起作用。您可以在迁移中进行更改并执行以下操作:

rake db:reset

如果所有其他方法都失败,则捕获新迁移。

答案 1 :(得分:1)

我刚刚掏出sqlitebrowser并手动删除了encrypted_password列。这解决了问题。之后我尝试上下移动,一切正常。谢谢Chris。