我假设每当rails应用程序需要构建数据库时,它都会通过按时间戳顺序遍历所有迁移文件来实现。它是否正确?
还是有其他原因吗?
答案 0 :(得分:9)
否 - 从头开始构建数据库时,您应该只使用schema.rb
中的模式文件。您可以使用rake db:schema:load
从
保持迁移的关键在于,如果某人检出了您的项目的一个版本,然后一个月后他们想要将其更新到最新版本,他们需要逐步了解如何从数据库结构获取然后到现在的数据库结构 - 不会丢失任何数据。因此,他们可以在这两点之间运行迁移,这将逐步将数据库转换为最新版本。
答案 1 :(得分:0)
您可以安全地删除它们。如果这样做,您需要擦除数据库并重新开始,可以使用rake db:schema:load
重新创建数据库。
答案 2 :(得分:0)
除了上述原因之外,它还可以帮助您通过rake db:rollback STEP=1
阅读documentation
答案 3 :(得分:0)
迁移文件为您提供了使用db&当
如果您将应用程序移动到另一台主机,它可以帮助您重建数据库,确定问题出现的位置,并且通常会为您提供更加强大的填充方式。随着时间的推移进化数据库
迁移是更改数据库架构的便捷方式 时间以一致和简单的方式。他们使用Ruby DSL 不必手动编写SQL,允许您的架构和更改 是数据库独立的。
您可以将每次迁移视为一个新的版本'的 数据库。架构开始时没有任何内容和每次迁移 修改它以添加或删除表,列或条目。活性 Record知道如何在此时间轴上更新您的架构 它从历史上的任何一点到最新版本。 Active Record还将更新您的db / schema.rb文件以匹配 最新的数据库结构。
对我来说,它基本上是一种保持数据库结构正确构建的方法,即使在通过不同服务器迁移时也是如此
<强>答案强>
要回答您的问题,有number of rake methods you can use to rebuild your db:
- db:migrate 运行尚未运行的(单个)迁移。
- 的分贝:创建强> 创建数据库db:drop删除数据库
<强>分贝:模式:负载强> 在(现有)数据库中创建表和列 schema.rb
db:setup 执行 db:create , db:schema:load , db:seed
db:reset 执行 db:drop , db:setup
如果您想从头开始创建数据库,您必须运行rake db:create
,rake db:migrate
和其他人的组合