rake db:schema:负载与迁移

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

这里的问题很简单--如果迁移变得缓慢和繁琐,随着应用程序变得更加复杂,以及我们是否拥有更干净的程序,rake db:schema:load相反,为什么会有迁移呢?

如果以上问题的答案是迁移用于版本控制(数据库更改的逐步记录),那么当应用程序变得更加复杂时,rake db:schema:load is used more instead, do they continue to maintain their primary function?

警告:

根据对这个问题的答复:rake db:schema:load将删除数据在生产服务器上,所以在使用它时要小心。

提问于
用户回答回答于

迁移提供了对数据库的向前和向后的步骤更改。在生产环境中,必须在部署期间对数据库进行增量更改:迁移为此功能提供了回滚故障安全。如果在生产服务器上运行rake db:schema:load,则最终将删除所有生产数据。这是一个危险的习惯。

尽管如此,我认为偶尔“崩溃”移民是一种不错的做法。这需要删除旧迁移,用单个迁移(非常类似于您的schema.rb文件)替换它们,并更新“模式”_“迁移”表以反映此更改。在做这件事时要非常小心!如果不小心,您可以很容易地删除生产数据。

顺便提一句,我坚信您永远不应该将数据创建放在迁移文件中。rb文件可用于此目的,也可用于自定义的rake或部署任务。将其放入迁移文件中会将数据库模式规范与数据规范混合,并可能导致运行迁移文件时发生冲突。

用户回答回答于

只是偶然发现了这篇文章,那是很久以前的事了,没有看到我期待的答案。

rake db:schema:load这是你第一次把系统投入生产。之后,应该正常运行迁移。

这还可以帮助您随时清理迁移,因为模式包含所有信息,可以将其他机器放到生产中,即使在清理迁移时也是如此。

扫码关注云+社区