我生成了一个迁移,它将名为encrypted_password的列添加到我的数据库中的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_password列,所以这就是我正在做的事情:
rake db:migrate:down VERSION=20110712172013
(这就是迁移的时间戳)
rake db:migrate
(我也试过rake db:migrate:redo VERSION=20110712172013
)
我收到此错误: SQLite3 :: SQLException:重复列名:encrypted_password:ALTER TABLE“users”ADD“encrypted_password”varchar(255)
因此,出于某种原因,向下迁移并不是真正删除列。任何人都知道为什么?
答案 0 :(得分:2)
您的语法对于向下迁移是正确的。不知道为什么它不起作用。您可以在迁移中进行更改并执行以下操作:
rake db:reset
如果所有其他方法都失败,则捕获新迁移。
答案 1 :(得分:1)
我刚刚掏出sqlitebrowser
并手动删除了encrypted_password
列。这解决了问题。之后我尝试上下移动,一切正常。谢谢Chris。