migrate中使用bigint _Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > migrate中使用bigint

migrate中使用bigint

 2011/11/17 9:37:06  jsntghf  http://2015.iteye.com  我要评论(0)
  • 摘要:使用mysql时,integer最大是10位。如果想存储更大的数字就要使用BIGINT。比如现在QQ号已经有11位,很快就12位了。#activerecord-3.0.7/lib/active_record/connection_adapters/mysql_adapter.rbdeftype_to_sql(type,limit=nil,precision=nil,scale=nil)returnsuperunlesstype.to_s=='integer'caselimitwhen1
  • 标签:使用

使用mysql时,integer最大是10位。如果想存储更大的数字就要使用BIGINT。比如现在QQ号已经有11位,很快就12位了。

?

# activerecord-3.0.7/lib/active_record/connection_adapters/mysql_adapter.rb      
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

?

所以我们可以添加:limit => 5/6/7/8来得到一个bigint列。

?

t.integer :qq, :limit => 8

?

如果想设置id为bigint,还要在create_table时传递:id => false,然后手动指定id列。

?

def self.up  
    create_table :demo, :id => false do |t|  
    t.integer :id, :limit => 8 
end 

?

发表评论
用户名: 匿名