无法在rails上运行db迁移

时间:2014-06-10 14:18:39

标签: mysql ruby-on-rails ruby database dbmigrate

我一直在通过rake db:migrate。在/ rails中迁移数据库时遇到了麻烦。

我的迁移目前看起来像这样:

class CreateArticles < ActiveRecord::Migration
  def change
    create_table :articles do |t|
    t.string :title
    t.text :subtitle
    t.string :slug
    t.text :body
    t.integer :publish, limit: 1, default: 0
    t.timestamps
    end
  end
end

但是,如果我从中删除了一个列,甚至添加或修改了一个列,则rake db:migrate命令不执行任何操作。我可以迁移它的唯一方法是运行类似:

rake db:migrate VERSION=20080906120000

但即使这样也很有气质,所以大多数时候我需要使用

来重置数据库
db:drop
db:create

然后正常运行迁移。基本上db:migrate只能在删除和创建数据库后第一次工作。

在运行迁移之前,我还尝试过回滚。

这远非理想,所以我很感激任何帮助。

(我意识到有类似的问题但是他们的所有问题都在数据库重置后得到解决)

1 个答案:

答案 0 :(得分:2)

您需要运行迁移down,然后再次运行up,这是通过redo任务完成的。试试这个:

rake db:migrate:redo VERSION=20080906120000

编辑:如果你想要保留在这个表中的数据,最好进行新的迁移以删除列或你想做的任何事情,因为上面将删除并重新创建表,擦除数据。过程