1

我生成了一个迁移,它将一个名为 encrypted_pa​​ssword 的列添加到我的数据库中存在的用户表中。这是由 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)

因此,出于某种原因,向下迁移并没有真正删除该列。有人知道为什么吗?

4

2 回答 2

2

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

rake db:reset

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

于 2011-07-12T17:42:13.403 回答
1

我只是手动sqlitebrowser删除并删除了该列。encrypted_password这解决了问题。之后我也尝试上下迁移,一切正常。谢谢克里斯。

于 2011-07-29T06:56:41.983 回答