- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我一直在一个项目的分支之间切换,每个分支都有不同的迁移......这是场景:
$ rake db:migrate:status
Status Migration ID Migration Name
--------------------------------------------------
...
up 20130307154128 Change columns in traffic capture
up 20130311155109 Remove log settings
up 20130311160901 Remove log alarm table
up 20130320144219 ********** NO FILE **********
up 20130320161939 ********** NO FILE **********
up 20130320184628 ********** NO FILE **********
up 20130322004817 Add replicate to root settings
up 20130403190042 ********** NO FILE **********
up 20130403195300 ********** NO FILE **********
up 20130403214000 ********** NO FILE **********
up 20130405164752 Fix ap hostnames
up 20130410194222 ********** NO FILE **********
问题是 rake db:rollback
根本不工作,因为缺少文件...
我应该怎么做才能再次回滚并摆脱 NO FILE 消息?
顺便说一句,rake db:reset
或 rake db:drop
不是一个选项,我不能丢失其他表中的数据...
最佳答案
我最终是这样解决问题的:
(1) 转到有迁移文件的分支并回滚它们。当您有许多分支时,这不是微不足道的,如果您尝试 merge 它们会导致许多冲突。所以我使用这个命令来找出每个孤立迁移所属的分支。
因此,我需要找到上次修改迁移的提交。
git log --all --reverse --stat | grep <LASTEST_ORPHAN_MIGRATION_ID> -C 10
我采用提交哈希并确定它属于哪个分支,如下所示:
git branch --contains <COMMIT_HASH>
然后我可以回到那个分支,进行回滚并对所有丢失的文件重复这个过程。
(2) 运行迁移:检查您最终要处理的分支并运行迁移,您应该可以开始了。
疑难解答
在某些情况下,我还在已删除的分支上运行孤立迁移。
为了解决这个问题,我创建了与丢失文件具有相同 migration_id 的虚拟迁移文件,并将它们回滚。在那之后,我能够删除他们的虚拟迁移并拥有干净的迁移状态:)
另一种方法是直接从数据库中删除丢失的文件(rails dbconsole
):
delete from schema_migrations where version='<MIGRATION_ID>';
关于ruby-on-rails - 解决 Rails 孤立迁移的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16041790/
如果数据很大,我正在使用 orphan 属性在打印时添加分页符它在 chrome 和 IE 中工作但在 FireFox 中不支持. docprint.document.write('
如果我从“Default.aspx”等进行 AJAX PageMethod 或 WebMethod 调用,然后在初始 PageMethod 返回之前快速导航到另一个页面(例如“Settings.asp
我是一名优秀的程序员,十分优秀!