我正在尝试保存一个代表文件长度的数字 (4825733517)。该列设置为整数类型。我没有设置任何验证或限制。
RangeError: 4825733517 is out of range for ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Integer with limit 4
我应该为该值使用其他列类型吗? (在 rails 4.2.4 上)
最佳答案
对于 integer
类型的列,:limit
值是以字节为单位的最大列长度 (documentation)。
对于 4 字节长度,您可以存储的最大有符号整数是 2,147,483,647,远小于您的值 4,825,733,517。您可以增加字节限制,例如,8 个字节是一个长整数(bigint PostgreSQL type),这将允许您存储最多 9,223,372,036,854,775,807 的带符号值。
您可以使用类似 rails generate migration change_integer_limit_in_your_table
的迁移创建它,以及以下代码:
class ChangeIntegerLimitInYourTable < ActiveRecord::Migration
def change
change_column :your_table, :your_column, :integer, limit: 8
end
end
关于ruby-on-rails - PostgreSQL 数据库中的整数超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33517403/