Rails 5.1.0 引入了 bigint 主键和外键。
所有新表都将具有 bigint pk,并且创建到旧表的引用迁移将不起作用,因为旧 pk 是正常的 int。
仅使用change_column _, :id,:bigint
带有外键的错误就是指向它,更不用说查找所有表以及需要修改哪个键的所有手工劳动。
如何迁移生产数据库中的所有表以使用 bigint pk 和 fk?
当然,因为它的生产rails db:drop rails db:setup
不是一种选择。
Rails 5.1.0 引入了 bigint 主键和外键。
所有新表都将具有 bigint pk,并且创建到旧表的引用迁移将不起作用,因为旧 pk 是正常的 int。
仅使用change_column _, :id,:bigint
带有外键的错误就是指向它,更不用说查找所有表以及需要修改哪个键的所有手工劳动。
如何迁移生产数据库中的所有表以使用 bigint pk 和 fk?
当然,因为它的生产rails db:drop rails db:setup
不是一种选择。
我面临同样的问题。临时删除 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
您必须对所有表和外键列执行此操作,可能以相同的方式处理索引,我没有测试过