【问题标题】:Should I use a Rails Migration to update production data?我应该使用 Rails 迁移来更新生产数据吗?
【发布时间】:2014-06-15 13:02:48
【问题描述】:

在旧的 Rails 应用程序中,我需要更新生产数据库中一组记录中的一个列。我不会以任何方式改变数据库的结构。我可以只编写一个针对数据库运行的 SQL 脚本,也可以编写一个 Rails 迁移来更新所有需要更改的模型。但是,这感觉不对。

对于仅修改生产数据、不更改结构的一次性数据库更新的最佳做法是什么?

【问题讨论】:

    标签: mysql sql ruby-on-rails ruby


    【解决方案1】:

    rubyonrailsguide

    迁移是一种随时间推移以一致且简单的方式更改数据库架构的便捷方式。

    我认为您应该有用于数据修复的脚本,因为这些是一次性修复,如果有人在其他迁移或每次测试时在本地运行迁移,等等,您不希望它们运行。迁移应该只包含以任何方式更改数据库架构的代码,而不是数据。

    已编辑

    Rails 似乎随着时间的推移而发展,现在它表明迁移可用于添加/修改数据,来自edgeguides

    Rails 迁移功能的主要目的是发出使用一致过程修改架构的命令。迁移也可用于添加或修改数据。这在无法销毁和重新创建的现有数据库(例如生产数据库)中很有用。

    【讨论】:

    • 这也是我的想法。我继承了这个项目,并在更新模型、运行原始 SQL 的代码中发现了很多迁移,以及改变数据库结构的传统迁移。
    • 您将如何处理迁移添加了必须在下一次迁移运行之前填充的新列的情况?期望人们一次运行一个迁移,并穿插运行一些其他自定义脚本,这对我来说似乎有点不合理。
    • 如果是这种情况,您可能必须在迁移本身中填充数据,现在也很少有 gem 可以帮助您这样做,例如 this
    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多