基本上我不小心写了password_has而不是password_hash,我想通过rake db:rollback我可以做出相应的更改,然后做rake db:migrate和rake db:reset但看起来好像mysql中没有发生变化..我保持得到错误..我该怎么办?理想情况下,我想破坏数据库并重新启动它,但它不会破坏它,因为当我这样做并尝试重新创建它时,它说它仍然有一个已经创建的副本..我在这里疯了,请帮助我是一个新手!
答案 0 :(得分:6)
您可以编写重命名迁移。生成它:
rails g migration RenameColumn
接下来,在生成的迁移文件中应用以下代码以重命名列:
class RenameColumn < ActiveRecord::Migration
def self.up
rename_column :table_name, :old_column, :new_column
end
def self.down
# rename back if you need
end
end
运行迁移后,请避免将其回滚以进行修改。写一个新的来代替。
如果rake db:migrate
出错,请尝试运行您需要的错误:
rake db:migrate:up VERSION=20130405061213
只需替换正确的版本(它位于迁移的文件名中).x
答案 1 :(得分:1)
我认为你不必首先回去,只需进行新的迁移即可更改列名。 如果您指定了错误消息,也会有所帮助。
答案 2 :(得分:-1)
您可以执行以下sql,例如:
ALTER TABLE table_name CHANGE prev_column_name new_column_name INTEGER;