3

基本上我不小心写了password_has 而不是password_hash,我认为通过rake db:rollback 我可以进行适当的更改,然后执行rake db:migrate 和rake db:reset 但似乎更改没有在mysql 中发生。我不断收到错误。 。 我该怎么办?理想情况下,我想销毁数据库并重新启动它,但它不会破坏它,因为当我这样做并尝试重新创建它时,它说它仍然已经创建了一个副本。我在这里发疯了,请帮助我新手!

4

3 回答 3

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

于 2013-06-01T04:34:39.920 回答
1

我认为您不必一开始就返回,只需进行新的迁移更改列名称即可。如果您指定了错误消息也会很有帮助。

于 2013-06-01T00:35:49.987 回答
-1

例如,您可以执行以下 sql:

ALTER TABLE table_name CHANGE prev_column_name new_column_name INTEGER;
于 2013-06-01T00:35:36.463 回答