Rails 5.1.0引入了bigint主键和外键。
所有新表都有bigint pk,并且创建对旧表的引用迁移将不起作用,因为旧的pk是普通的int。
使用change_column _, :id,:bigint
只是外键错误指向它,更不用说找到所有表的所有手动工作,以及哪些需要修改的键。
如何将我的所有表格的生产数据库迁移到使用bigint pk和fk?
当然,因为它的生产rails db:drop rails db:setup
不是一种选择。
答案 0 :(得分: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
您必须对所有表和外键列执行此操作 也许以同样的方式处理索引,我没有测试