【问题标题】:We have lots of database migration files - should we keep them?我们有很多数据库迁移文件——我们应该保留它们吗?
【发布时间】:2012-03-08 11:08:50
【问题描述】:

我们有大约 100 个数据库迁移文件。他们中的许多人进行了不可逆转的架构更改。还有一些后续迁移会更改或删除在早期迁移中创建的表。

我们直接从 schema.rb 文件创建新数据库,所以我们想知道是否有任何理由保留完整的迁移集?

我们将创建一个基于现有 schema.rb 的新迁移。

【问题讨论】:

    标签: ruby-on-rails database-migration


    【解决方案1】:

    是的,您提出的建议被视为最佳做法。

    我已经用我的旧应用多次这样做了。你会想要在某个地方备份你的迁移,直到你满意一切都很好,当然,这是应用程序维护的一个重要部分 - 如果你有很多旧的迁移,可能需要很长时间才能完成 db:reset或运行一个新的开发环境。

    【讨论】:

    • 我们已经尝试在某个地方讨论过这个问题 - 您是否知道有任何网站或资源详细介绍了 Rails/数据库最佳实践?
    • @roo 我看过一些“最佳实践”网站,但似乎没有一个专门解决这个问题。在本地黑客马拉松上与一些 Ruby 爱好者讨论后,我将其作为最佳实践。几乎不科学,但肯定是经过同行评议的。 :) 如果我要将此案例作为最佳实践进行争论,我会说将您的任何代码库(包括迁移)与没有人可以使用的历史混在一起是没有意义的。如果有人想为自己的教育阅读数据库历史,Git 会为您提供帮助;没有理由让它在工作分支中。
    • 是的,我们也得出了相同的结论。很高兴知道其他人也有同样的对话:)
    • 你有没有找到任何关于这个问题的“最佳实践”教程?
    • db:reset 将永远占用的论点是错误的,rake db:reset 和rake db:setup 已经使用schema.rb(或structure.sql)。也就是说:去除旧的杂物确实有意义:)
    【解决方案2】:

    我只使用rake db:setup 和rake db:reset(从不使用rake db:migrate)在生产服务器或新开发机器上安装新数据库。这些命令已经使用schema.rb 或structure.sql 重新创建数据库。

    也就是说,复制schema.rb 真的很容易,将其用作新起点并删除所有旧迁移。

    我更喜欢出于历史目的保留我的迁移,但这只是个人喜好问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 2015-06-30
      相关资源
      最近更新 更多