根据我发现的情况,我现在正在使用此功能,但它无效......
def change
change_column :users, :twitter_id, :integer, :limit => 8
end
答案 0 :(得分:15)
我刚遇到同样的问题。以下对我有用:
def up
change_column :my_table, :my_column, :bigint
end
答案 1 :(得分:1)
根据ActiveRecord type of integer (tinyint, smallint, mediumint, int, bigint)
:bigint不同的数据类型的任何人,也可以使用:tinyint
,:smallint
和:mediumint
>
# activerecord-3.0.0/lib/active_record/connection_adapters/mysql_adapter.rb
# Maps logical Rails types to MySQL-specific data types.
def type_to_sql(type, limit = nil, precision = nil, scale = nil)
return super unless type.to_s == 'integer'
case limit
when 1; 'tinyint'
when 2; 'smallint'
when 3; 'mediumint'
when nil, 4, 11; 'int(11)' # compatibility with MySQL default
when 5..8; 'bigint'
else raise(ActiveRecordError, "No integer type has byte size #{limit}")
end
end
另外,请对up
使用down
和rails db:rollback
;这对我有用:
class ChangeCarNumberOfKeysToSmallInt < ActiveRecord::Migration[5.2]
def up
change_column :cars, :number_of_keys, :tinyint
end
def down
change_column :cars, :number_of_keys, :int
end
end