ssc*_*rus 167 migration ruby-on-rails ruby-on-rails-3
这里非常简单的问题 - 如果迁移变得缓慢而繁琐,因为应用程序变得更加复杂,如果我们有更清洁rake db:schema:load的调用,为什么迁移根本存在呢?
如果上面的答案是迁移用于版本控制(数据库更改的逐步记录),那么当应用程序变得更复杂并且rake db:schema:load更多地使用时,它们是否继续维护其主要功能?
从这个问题的答案:rake db:schema:load 将删除生产服务器上的数据,因此在使用它时要小心.
jes*_*iss 202
迁移为数据库提供向前和向后的步骤更改.在生产环境中,必须在部署期间对数据库进行增量更改:迁移为此功能提供回滚故障保护.如果您rake db:schema:load在生产服务器上运行,您最终将删除所有生产数据.这是一个危险的习惯.
话虽如此,我认为偶尔"崩溃"迁移是一种体面的做法.这需要删除旧的迁移,用一次迁移(非常类似于您的schema.rb文件)替换它们并更新schema_migrations表以反映此更改.这样做时要非常小心!如果您不小心,可以轻松删除生产数据.
作为旁注,我坚信你绝不应该将数据创建放在迁移文件中.该seed.rb文件可用于此任务或自定义rake或部署任务.将此文件放入迁移文件会将数据库架构规范与数据规范混合在一起,并在运行迁移文件时导致冲突.
小智 30
刚刚发现这篇文章,很久以前,并没有看到我期待的答案.
rake db:schema:load第一次将系统投入生产时非常棒.之后,您应该正常运行迁移.
这还可以帮助您随时清理迁移,因为即使清理了迁移,架构也具有将其他计算机投入生产的所有信息.
小智 5
作为其他 ORM 的用户,Rails 没有“同步和更新”功能对我来说总是很奇怪。即,通过使用模式文件(代表整个、最新的模式),遍历现有的数据库结构并根据需要添加/删除表、列、索引。
对我来说,这会更加稳健,即使可能会慢一些。
| 归档时间: |
|
| 查看次数: |
82359 次 |
| 最近记录: |