Ruby on rails 将所有以前的迁移文件保存在rails中的目的是什么?

Ruby on rails 将所有以前的迁移文件保存在rails中的目的是什么?,ruby-on-rails,ruby,migration,Ruby On Rails,Ruby,Migration,我假设只要rails应用程序需要构建数据库,它就会按照时间戳的顺序遍历所有迁移文件。这是正确的吗 还是有其他原因 您可以安全地删除它们。如果您这样做,并且需要擦除数据库并重新启动,则可以使用rake db:schema:load重新创建数据库。否-从头开始构建数据库时,您应该只使用位于schema.rb中的架构文件。您可以使用rakedb:schema:load从中创建数据库架构 保持迁移的意义在于,如果有人签出了项目的一个版本,一个月后又想将其更新为最新版本,那么他们需要知道如何从数据库结构再

我假设只要rails应用程序需要构建数据库,它就会按照时间戳的顺序遍历所有迁移文件。这是正确的吗


还是有其他原因

您可以安全地删除它们。如果您这样做,并且需要擦除数据库并重新启动,则可以使用
rake db:schema:load
重新创建数据库。

否-从头开始构建数据库时,您应该只使用位于
schema.rb
中的架构文件。您可以使用
rakedb:schema:load
从中创建数据库架构


保持迁移的意义在于,如果有人签出了项目的一个版本,一个月后又想将其更新为最新版本,那么他们需要知道如何从数据库结构再到数据库结构,而不丢失任何数据。因此,他们可以在这两点之间运行迁移,这将逐步将数据库转换为最新版本。

除上述原因外,它可以帮助您指定要回滚的迁移版本,通过
rake db:rollback STEP=1
read

迁移文件,您可以一步一步地了解使用db时所做的操作&when

如果您将应用程序移动到另一台主机,它将帮助您重建数据库,确定出现问题的位置,并通常为您提供一种更可靠的方法,随着时间的推移填充和发展数据库

从:

迁移是一种方便的方法,可以通过迁移更改数据库模式 以一种一致且简单的方式来计算时间。他们使用Ruby DSL,因此 不必手动编写SQL,允许您的模式和更改 独立于数据库

您可以将每次迁移视为 数据库模式开始时没有任何内容,每次迁移 修改它以添加或删除表、列或条目。活跃的 Record知道如何沿此时间线更新您的模式,从而 它从历史上的任何一点到最新版本。 Active Record还将更新您的db/schema.rb文件以匹配 数据库的最新结构

对我来说,这基本上是一种保持数据库结构正确构造的方法,即使在跨不同服务器迁移时也是如此


回答

要回答您的问题,有以下几点:

  • db:migrate运行尚未运行的(单个)迁移
  • db:create 创建数据库db:drop删除数据库
  • db:schema:load 在(现有)数据库中创建表和列,如下所示 schema.rb

  • db:setup执行db:createdb:schema:loaddb:seed

  • db:reset执行db:dropdb:setup


如果您想从头开始创建数据库,则必须运行rake db:create的组合
rake db:migrate
和其他

您可以通过
rake db:rollback
基于您的迁移指定
rollback
。可能重复为什么一个月后不能有人签出您的项目,也可以使用schema.rb?如果他们一个月前从应用程序中有一个现有数据库,其中的数据以熟悉的方式设置,然后,他们必须使用新的schema.rb删除并重新创建数据库。这不是一个很好的解决方案。