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

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

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

你应该认真阅读理解 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 了。。。。。。

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