2014-06-10 163 views
1

我在使用rake db迁移rails中的数据库时遇到了问题:迁移。无法在rails上运行db迁移

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

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 VERSION=20080906120000 

但即使是气质所以大部分时间我需要重置使用

db:drop 
db:create 

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

我也尝试回滚之前运行迁移。

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

(我知道有类似的问题,但他们所有的问题都分贝复位后解决)

+0

看到链接http://stackoverflow.com/questions/23563978/migration-to-create-default-value/23564092#23564092它可能会有所帮助 –

+0

谢谢Shamsul,我也试过,它有时会工作但它有效我正在寻找一个更永久的修复程序,以便我可以正常运行db:migrate。 – Terryfrancis

+0

您是否正在运行迁移多个时间?你需要db:rollback然后db:migrate? –

回答

2

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

rake db:migrate:redo VERSION=20080906120000 

编辑:如果你有你想保持在该表中的数据,这是更好地使新的迁移消除任何你想做的事列,或如上面会删除并重新创建表,擦除过程中的数据。

+0

像魅力一样工作,欢呼声Max。 – Terryfrancis

相关问题