我在轨道上使用ruby来申请。我现在正在我的本地服务器上开发它。
每次我需要对数据库进行更改时,我都需要创建一个迁移。为什么我不能直接在schema.rb本身进行更改?
我被允许重置数据库并重置表中的所有值。我遇到了一个问题,我需要将日期格式从“dateTime”更改为“timestamp”。现在有太多的领域无法改变。为什么我不能在schema.rb中更改它们?
答案 0 :(得分:3)
schema.rb 是一个自动生成的文件,在您运行迁移后将从数据库的当前状态转储。虽然我强烈反对它,但实际上可以手动更改它,然后运行rake db:schema:load
将其应用到数据库。但是,您将失去从迁移中获得的所有好处,并且您将忽略惯例。
那么,你问的有什么好处?仅举几例:
答案 1 :(得分:1)
首先,迁移很容易恢复。其次,通过迁移,您有历史,更重要的是,有变化的事物。第三,您可以向迁移添加其他代码(例如,为刚添加的列计算一些值)。
我确信还有更多好处。
答案 2 :(得分:0)
迁移是确保您的开发,测试和生产环境完全相同的关键。如果你开始在数据库中乱窜,dev会非常快地看起来就像prod ...事实上,你很可能会开始在prod中进行开发,这是一个非常糟糕的主意!