Rails 5.1.0如何升级

Iaa*_*auw 5 migration ruby-on-rails bigint ruby-on-rails-5.1

Rails 5.1.0引入了bigint主键和外键.

所有新表都将具有bigint pk并且创建对旧表的引用迁移将不起作用,因为旧的pk是普通的int.

使用change_column _, :id,:bigint只是错误有一个外键向它指向,更不用说找到所有的表和有需要修改该键的所有手工劳动.

如何将我的所有表格的生产数据库迁移到使用bigint pk和fk?

因为它的生产rails db:drop rails db:setup不是一种选择.

小智 1

我面临同样的问题。临时删除 fk 应该可以。目标是将所有主键从 int 更改为 bigint。

class ChangeForeignKeysToBigInt < ActiveRecord::Migration[5.1]
  def change

    remove_foreign_key "event_users", "events"

    change_column :event_users, :event_id, :bigint
    change_column :events, :id, :bigint

    add_foreign_key "event_users", "events"

  end
end
Run Code Online (Sandbox Code Playgroud)

你必须对所有表和外键列执行此操作,可能以相同的方式处理索引,我没有测试过