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)
你必须对所有表和外键列执行此操作,可能以相同的方式处理索引,我没有测试过