“向下”迁移何时有用?

aaa*_*dan 7 ruby-on-rails database-migration database-schema rails-migrations

简洁版本:

移民怎么了down?在什么情况下您需要使用它?

长版:

许多支持数据库模式版本的框架(包括但不限于Rails的“迁移”)允许开发人员指定如何up反转数据升级(操作down),甚至通过分析代码自动生成降级操作(如 Rails 的change方法)。

事实上,在我遇到的所有 Rails 迁移代码中这样做似乎非常常见,这让我想知道这是否被认为是最佳实践。

就我个人而言,我从来没有需要降级数据库模式,而且我无法想象我想要的合理场景,无论是在开发还是生产中。我的经历似乎与普遍的down迁移不一致,所以我猜我错过了一些东西......

a 在哪些最常见的场景中down有用?

Rom*_*149 5

假设您已将新版本投入生产并运行迁移,一段时间后您发现了一个无法立即解决的错误。由于您需要保持生产服务器运行,因此您恢复到之前的提交。但是,这不会恢复对数据库所做的更改,这会导致错误。因此,您需要一种方法来回滚对数据库所做的更改,然后恢复到旧版本。这种情况可能不会经常出现,但重要的是要有一种应对这种情况出现的机制。

在开发过程中,您可能会运行一些迁移,然后决定要更改、添加或删除某些内容。有办法撤消它们意味着您不需要为每个小更改创建新的迁移。