【问题标题】:Cleaning up rails migrations & persisting production data [duplicate]清理 Rails 迁移和持久化生产数据 [重复]
【发布时间】:2019-05-31 21:33:53
【问题描述】:

我们维护一个大型项目,其中许多迁移可追溯到大约 4 年。

理想情况下,我们希望删除所有旧迁移并将架构内容复制到 initial_migration.rb 文件中。

那么我的问题包括三件事:

  • 这会清除我们的客户数据库吗?
  • 如果是这样,我们如何持久化数据?
  • 一般来说,解决此问题的最佳方法是什么

提前致谢。

【问题讨论】:

标签: mysql ruby-on-rails activerecord ruby-on-rails-5


【解决方案1】:

以下是我的处理方法:

  1. 至少在三个位置备份数据库。
  2. 复制一小部分数据库。
  3. 将副本转换为种子数据(如果这令人困惑,请告诉我,我将提供一个示例)。
  4. 创建一个新的 Rails 应用 (rails new <appname>)。
  5. 在新应用中为旧数据库中的每个表创建一个迁移,包含所需的所有字段和格式。
  6. 迁移您的新数据库。
  7. 在种子中的每个表类型的创建方法中至少添加一个!,即Student.create!(name:'Jane', email: 'jane@edu.edu')Teacher.create!('...)。如果数据没有保存到表中,这将导致 ActiveRecord 给您一个更详细的错误。
  8. 运行rails db:seed
  9. 当你有这个工作时,用更大的数据库块重复测试,或者跳到尝试整个事情。

更换数据库很大程度上取决于您的部署方式,我不是该领域的专家。您应该咨询您组织中的负责人,或者您可以尝试阅读此处Application Migration Best Practices

【讨论】:

    【解决方案2】:

    我认为首先你应该备份你的数据库。

    对于您当前的环境,我认为不需要运行新的迁移,因此,它的时间戳应该小于您当前的架构版本。

    如果您想在其他环境中运行该新迁移文件,我认为您可以。在我看来,您将拥有另一个具有相同结构的数据库。或者,您可以为这些环境复制当前的副本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-05
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 2019-03-24
      相关资源
      最近更新 更多