Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Postgres DB上的整数超出范围_Ruby On Rails_Postgresql - Fatal编程技术网

Ruby on rails Postgres DB上的整数超出范围

Ruby on rails Postgres DB上的整数超出范围,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,使用Postgres DB的简单rails应用程序,尝试插入2176968859时出现“整数超出范围”错误。迁移应该很容易修复,但我不确定。现在我有 create_table :targets do |t| t.integer :tid ... end 问题是什么?你太过分了。如果需要那么大的数字,请使用bigint 请注意中整数类型的允许值范围。我认为您必须使用bigint、decimal或double精度。PostgreSQL整数是有符号的,没有无符号数据类型-我打赌这是您的

使用Postgres DB的简单rails应用程序,尝试插入2176968859时出现“整数超出范围”错误。迁移应该很容易修复,但我不确定。现在我有

create_table :targets do |t|
   t.integer :tid
    ...
end

问题是什么?你太过分了。如果需要那么大的数字,请使用bigint


请注意中整数类型的允许值范围。我认为您必须使用bigint、decimal或double精度。

PostgreSQL整数是有符号的,没有无符号数据类型-我打赌这是您的问题


如果需要更大的值,请使用bigint。如果bigint还不够,请使用numeric-但除非您需要更大的大小或小数,否则请使用bigint而不是numeric,因为它要快得多。

当您声明列时,迁移过程中有一个神奇的咒语:

create_table :example do |t|
  t.integer :field, :limit => 8
end

:limit=>8是本例中的神奇之处,因为当您只说integer时,postgres只做有符号的4字节整数。它使用8字节有符号整数。

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

t.column :foobar, :bigint

正如前面的答案所指出的,
limit:8
也将实现同样的效果

感谢nsanders。”“bigint”是我要找的。对不起,如果我对大家的问题措辞不当!我建议您在表的fieldnice中更改/设置正确的数据类型,您知道如何通过编程获得整数的最大值,以便在有人输入大量数字时将其设置为nil吗?我在rails中使用pg gem。@ryan2johnson9不是随便的,但我打赌其他一些问题会回答这个问题;如果没有,请换一个新的