Postgres DB上的整数超出范围

New*_*ewy 28 postgresql ruby-on-rails

使用Postgres DB的简单rails应用程序,在尝试插入2176968859时出现"整数超出范围"错误.应该可以轻松修复迁移,但我不确定.现在我有......

create_table :targets do |t|
   t.integer :tid
    ...
end
Run Code Online (Sandbox Code Playgroud)

Pau*_*bel 57

当您声明列时,这是迁移中的神奇咒语:

create_table :example do |t|
  t.integer :field, :limit => 8
end
Run Code Online (Sandbox Code Playgroud)

:limit => 8在这种情况下是神奇的,因为当你说整数时,postgres只会签名4字节整数.这使用8字节有符号整数.


nsa*_*ers 19

问题是什么?你满溢了.如果你需要大数字,请使用bigint.

http://www.postgresql.org/docs/8.3/interactive/datatype-numeric.html


Chr*_*ini 12

在Rails中4.在迁移文件中,您可以将列定义为:

t.column :foobar, :bigint
Run Code Online (Sandbox Code Playgroud)

如前面的答案所述,limit: 8也会实现同样的目的