当前位置:  开发笔记 > IOS > 正文

rake db:migrate究竟是什么做的?

如何解决《rakedb:migrate究竟是什么做的?》经验,为你挑选了3个好方法。

rake db:migrate是否仅添加新的迁移,还是删除所有迁移/更改并构建所有新的迁移?

我认为rake会抛出错误,因为它试图访问迁移040中删除的迁移040中的表属性.不知何故,我的数据库和rake不同步,我想修复它们.

对于那里的专家 - rake与迁移不同步是否常见?我怎么能避免这种情况(不,我不会手工编辑我的架构或rake文件).



1> Daniel Vande..:

使用rails迁移时,schema_migrations会自动创建一个调用的表,该表通过存储每次迁移的版本号来跟踪已应用的迁移(这是在文件名中以迁移名称开头的数字,即db/migrate /_20090617111204__migration.rb).当您运行rake db:migrate向上迁移时,将仅运行以前未运行的迁移(即,它们的版本未包含在表中)(因此,更改已执行的迁移在运行时将不起作用db:migrate).向下迁移时,其中找到的所有版本schema_migrations都大于您回滚到的版本将被撤消.


谢天谢地,这个答案为我提供了更具体的内容.为什么db:migrate文档中的schema_migrations不在任何地方?这是我对系统的理解缺失的部分,关于轨道如何"解决应该运行哪些迁移"!

2> Jack..:

每次使用脚本(如脚本/生成模型...)创建迁移时,都会将新迁移添加到正确的目录中,以便与真实数据库同步.

实际上rake db:migrate只是检查哪些丢失的迁移仍然需要应用到数据库而不关心前一个.

当然,如果您使用其他方式修改数据库通常会获得不同步的事情,因为正如您所说,您可以发现自己将迁移应用于下面更改的内容.



3> Shripad Kris..:

迁移意味着您从当前版本移动到更新版本(如第一个答案中所述).使用rake db:migrate,您可以对架构应用任何新的更改.但是,如果要回滚到先前的迁移,可以使用rake db:rollback来取消新更改(如果定义不正确).警告:这样做会导致数据丢失.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有