Ruby on rails Postgres DB上的整数超出范围
使用Postgres DB的简单rails应用程序,尝试插入2176968859时出现“整数超出范围”错误。迁移应该很容易修复,但我不确定。现在我有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整数是有符号的,没有无符号数据类型-我打赌这是您的
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不是随便的,但我打赌其他一些问题会回答这个问题;如果没有,请换一个新的