这里的问题很简单--如果迁移变得缓慢和繁琐,随着应用程序变得更加复杂,以及我们是否拥有更干净的程序,rake db:schema:load
相反,为什么会有迁移呢?
如果以上问题的答案是迁移用于版本控制(数据库更改的逐步记录),那么当应用程序变得更加复杂时,rake db:schema:load
is used more instead, do they continue to maintain their primary function?
警告:
根据对这个问题的答复:rake db:schema:load
将删除数据在生产服务器上,所以在使用它时要小心。
发布于 2018-03-22 14:49:36
迁移提供了对数据库的向前和向后的步骤更改。在生产环境中,必须在部署期间对数据库进行增量更改:迁移为此功能提供了回滚故障安全。如果在生产服务器上运行rake db:schema:load,则最终将删除所有生产数据。这是一个危险的习惯。
尽管如此,我认为偶尔“崩溃”移民是一种不错的做法。这需要删除旧迁移,用单个迁移(非常类似于您的schema.rb文件)替换它们,并更新“模式”_“迁移”表以反映此更改。在做这件事时要非常小心!如果不小心,您可以很容易地删除生产数据。
顺便提一句,我坚信您永远不应该将数据创建放在迁移文件中。rb文件可用于此目的,也可用于自定义的rake或部署任务。将其放入迁移文件中会将数据库模式规范与数据规范混合,并可能导致运行迁移文件时发生冲突。
发布于 2018-03-22 15:28:15
只是偶然发现了这篇文章,那是很久以前的事了,没有看到我期待的答案。
rake db:schema:load
这是你第一次把系统投入生产。之后,应该正常运行迁移。
这还可以帮助您随时清理迁移,因为模式包含所有信息,可以将其他机器放到生产中,即使在清理迁移时也是如此。
https://stackoverflow.com/questions/-100007734
复制相似问题