【问题标题】:Do you only use rake:db:migrate:up when you only have migrations that have a up method in them?当您只有具有 up 方法的迁移时,您是否只使用 rake:db:migrate:up ?
【发布时间】:2017-05-09 07:21:38
【问题描述】:

查看网站上不同类型的数据库methods,我看到有rake:db:migraterake:db:migrate:uprake:db:migrate:down。您什么时候使用updown 调用?不只是运行rake:db:migraterake:db:rollback 已经完成了您需要的一切吗?

【问题讨论】:

    标签: ruby-on-rails database migration migrate


    【解决方案1】:

    rake db:migrate 运行 db/migrate 文件夹下的所有迁移

    rake db:migrate:up VERSION=20170130122612 用于向上特定迁移意味着它运行该迁移

    rake db:migrate:down VERSION=20170130122612 用于向下特定迁移意味着它反转该迁移

    rake db:rollback用于回滚上次迁移

    【讨论】:

    • 所以如果你使用rake db:migrate:down VERSION=20170130122612,它是否也会在down该版本之后的所有迁移?
    • @mangocaptain 接受并投票我的答案,如果它适合你。谢谢
    • 由于某些原因,rake db:migrate:up 似乎没有做任何事情。我没有收到任何错误,没有反馈,没有运行迁移,什么也没有。
    • 当您必须对表进行任何更改时,会使用上下迁移。那么首先你必须先向下迁移,然后再向上。
    • @mangocaptain 迁移用于添加/更新/删除/创建表或属性。您可以使用rails g 命令创建迁移并通过命令rake db:migrate 运行它,但是如果您想在该迁移中进行更改,那么您必须首先down 它,然后在该迁移文件中进行更改然后up 它。
    【解决方案2】:

    您是否只使用 rake db:migrate:up 当您只有具有 up 方法的迁移时?

    不,你使用

    rake db:migrate:up VERSION=123456789
    

    当您只想运行 (UP) 特定迁移时。

    Rails 自动为up 使用change 方法,但在down 的情况下,它会尽可能尝试反转迁移

    例如。

    add_column :table_name, :column_name, :integer
    

    变成

    remove_column :table_name, :column_name
    

    如果无法逆转,rails 将引发IrreversibleMigrationError

    【讨论】:

    • 你不能在没有up 的情况下只做rake db:migrate: VERSION=123456789 吗?
    • @mangocaptain 如果你这样做,它将运行从VERSION 到最后一个的所有迁移。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    相关资源
    最近更新 更多