我有一个拥有大量模型和数据库表的rails网站。 在所有这些中,我想将:id主键列更改为bigint而不是int,因为它将跨越MySQL的整数int(11)限制。
我不想使用他们建议我们做的其他帖子中建议的方法:id =>创建表并添加自定义列时为false:id指定大小。
我已经有很多数据了,我不希望id列ids也改变,因为我正在使用它来处理一些has_many belongs_to关系并且可以打破所有链接。
请建议我如何将int(11)中的change_column id更改为bigint,而无需重新创建表和/或丢失数据和id值
答案 0 :(得分:12)
不要忘记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
答案 1 :(得分:1)
试一试
进行如下所示的迁移:
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