新手问题 rails db:migrate 后,莫名出现以前删除过的数据库字段

ForrestDouble · 2017年03月21日 · 最后由 jicheng1014 回复于 2017年03月22日 · 2188 次阅读

以前比较菜,在添加错误字段后,每次直接删除了migration文件,没有 数据库进行回滚,导致现在每次添加字段后,都会出现以前加过的字段,有什么办法能解决一下。重新clone了项目也不行,是不是要重导入一份干净的数据库

共收到 8 条回复

你应该认真阅读理解 Rails Guides 里面 Migrations 的部分,里面有介绍正确的使用方法

http://guides.ruby-china.org/active_record_migrations.html

huacnlee 回复

last_comment is deprecated. Please use last_description instead. 出现这种情况,我想加的字段没在数据库中,但是在schema中出现了

再generate一个删除字段的migration?

某次运行 rake db:migrate 过程报错,但是字段已经在数据库中创建,
执行db:rollback也报错无法回滚,无奈 db:reset 重新删除,创建数据库

现在也搞不清为什么不能db:rollback回滚。

如果数据不要了的话就drop掉重建。

如果数据还要的话就手工修数据库。

sec 回复

那肯定是没写好up跟down

  1. 再新建一个migration, remove_column移除字段
  2. 直接操作数据库

有些migration没有down方法, 需要你单独写,up与down代码执行顺序,先进后出……直接删除migration对数据库没有影响,也不会修改schema,执行rake db migrate:down VERSION=2017***********才可以有效的删除字段,然后移除migration

曾经被migrate 弄吓着过

有次处理mysql 的index 的创建的时候 因为使用了ali 提供的RDS,遇见了创建varchar 255 的 index 长度的问题,migration 失败了 但是这玩意它是创建成功了几个之后失败的,失败后是不会自动回滚删掉之前创建成功的index的 当时拿公司ci 跑的capistrano, 还以为出了什么大事故, 重新跑了几次都不行,最后曲线救国,登数据库手动删,再改字段什么的。 线上数据,操作的时候手都在抖,测试环境演练了几次,半夜2点爬起来备份数据库弄

后来,用mongodb了。。。。。。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册