我有一个rails网站,里面有很多模型和数据库表。在所有这些中,我想将:id主键列更改为bigint,而不是int,因为它即将超过MySQL上的整数int(11)限制。
我不想使用其他帖子中建议的方法,他们建议我们在创建表和添加自定义列时执行:id=>false:id指定大小。
我已经有了很多数据,我不希望id列id也发生变化,因为我正在将其用于一些has_many belongs_to关系,并且可能会断开所有链接。
请建议我如何将_column id从int(11)更改为bigint,而不重新创建表和/或丢失数据和id值
不要忘记auto_increment: true
。
class NameOfYourMigration < ActiveRecord::Migration
def up
change_column :table_name, :id, :integer, limit: 8, auto_increment: true
end
def down
change_column :table_name, :id, :integer, auto_increment: true
end
end
尝试一下
进行如下迁移:
class NameOfYourMigration < ActiveRecord::Migration
def up
change_column :table_name, :id, :integer, limit: 8 # <-- makes the column type bigint
end
def down
change_column :table_name, :id, :integer
end
end