以前比较菜,在添加错误字段后,每次直接删除了 migration 文件,没有 数据库进行回滚,导致现在每次添加字段后,都会出现以前加过的字段,有什么办法能解决一下。重新 clone 了项目也不行,是不是要重导入一份干净的数据库
你应该认真阅读理解 Rails Guides 里面 Migrations 的部分,里面有介绍正确的使用方法
http://guides.ruby-china.org/active_record_migrations.html
last_comment is deprecated. Please use last_description instead. 出现这种情况,我想加的字段没在数据库中,但是在 schema 中出现了
last_comment
last_description
再 generate 一个删除字段的 migration?
某次运行 rake db:migrate 过程报错,但是字段已经在数据库中创建, 执行db:rollback也报错无法回滚,无奈 db:reset 重新删除,创建数据库
现在也搞不清为什么不能 db:rollback 回滚。
如果数据不要了的话就 drop 掉重建。
如果数据还要的话就手工修数据库。
那肯定是没写好 up 跟 down
remove_column
有些 migration 没有down方法,需要你单独写,up 与 down 代码执行顺序,先进后出……直接删除 migration 对数据库没有影响,也不会修改 schema,执行rake db migrate:down VERSION=2017***********才可以有效的删除字段,然后移除 migration
down
rake db migrate:down VERSION=2017***********
曾经被 migrate 弄吓着过
有次处理 mysql 的 index 的创建的时候 因为使用了 ali 提供的 RDS,遇见了创建 varchar 255 的 index 长度的问题,migration 失败了 但是这玩意它是创建成功了几个之后失败的,失败后是不会自动回滚删掉之前创建成功的 index 的 当时拿公司 ci 跑的 capistrano,还以为出了什么大事故, 重新跑了几次都不行,最后曲线救国,登数据库手动删,再改字段什么的。 线上数据,操作的时候手都在抖,测试环境演练了几次,半夜 2 点爬起来备份数据库弄
后来,用 mongodb 了。。。。。。