我正在开发一个Rails 4.2.5应用程序,允许使用回形针上传视频。除了非常大的文件,它工作得很好。使用超过3GB的视频时,会出现以下错误:
RangeError (3283091012 is out of range for ActiveRecord::Type::Integer with limit 4)
现在我可以知道
3283091012
是文件的大小,所以我认为当MySQL试图为paperclip创建的file_size
字段保存该值时会发生这种情况,我可以通过增加数据库中的限制或使用迁移文件来修复它,甚至更好,但我想我以前会检查表结构,我对以下情况感到惊讶:mysql> describe formats;
+-------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| video_id | int(11) | YES | MUL | NULL | |
| name | varchar(255) | YES | | NULL | |
| quality | varchar(255) | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
| file_file_name | varchar(255) | YES | | NULL | |
| file_content_type | varchar(255) | YES | | NULL | |
| file_file_size | int(11) | YES | | NULL | |
| file_updated_at | datetime | YES | | NULL | |
| trailer | tinyint(1) | YES | | 0 | |
+-------------------+--------------+------+-----+---------+----------------+
正如您所看到的,
file_file_size
是一个int(11)
而不是4所声称的错误。知道是什么原因吗?
注意:我对模型没有任何奇特的验证(只是强制存在两个属性),控制器操作是一个常规的创建操作。
最佳答案
根据MYSQL文档,整数的范围是-2147483648到+2147483647。所以你的号码对这类人来说太大了。
更新列并使用参数限制来指示您想要bigint。
class ChangeIntegerLimitInYourTable < ActiveRecord::Migration
def change
update_column :your_table, :your_column, :integer, limit: 8
end
end
关于mysql - Rails +回形针RangeError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34477248/