使用Postgres DB的简单rails应用程序,在尝试插入2176968859时出现“整数超出范围”错误。应该可以轻松修复迁移,但我不确定。现在我有......
create_table :targets do |t|
t.integer :tid
...
end
答案 0 :(得分:56)
当您声明列时,这是迁移中的神奇咒语:
create_table :example do |t|
t.integer :field, :limit => 8
end
:limit =>在这种情况下,8是神奇的,因为当你说整数时,postgres只会签名4字节整数。这使用8字节有符号整数。
答案 1 :(得分:19)
问题是什么?你满溢了。如果你需要大数字,请使用bigint。
http://www.postgresql.org/docs/8.3/interactive/datatype-numeric.html
答案 2 :(得分:12)
在Rails中4.在迁移文件中,您可以将列定义为:
t.column :foobar, :bigint
如前面的答案中所述,limit: 8
也会实现同样的目标
答案 3 :(得分:1)
请注意http://www.postgresql.org/docs/8.3/interactive/datatype-numeric.html中整数类型的允许值范围。我认为你将不得不使用bigint,decimal或double precision。
答案 4 :(得分:1)
PostgreSQL整数已签名,没有无符号数据类型 - 我打赌这是你的问题。
如果您需要更大的值,请使用bigint。如果bigint还不够,请使用数字 - 但是使用bigint而不是数字,除非你需要更大的大小或小数,因为它更快。