今天存储数据的时候报错,发现是3435065640超出了常规int的存储长度,
RangeError (3435065640 is out of range for ActiveRecord::Type::Integer with limit 4)
$ bundle exec rails db -p
mysql> desc recommended_videos; +-------------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | video_id | varchar(255) | YES | | | | | res_desc | text | YES | | NULL | | | state | int(11) | YES | | 0 | | | created_at | datetime | YES | | NULL | | | +-------------------------+--------------+------+-----+---------+----------------+
http://dev.mysql.com/doc/refman/5.7/en/integer-types.html
12.2.1 Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT
MySQL supports the SQL standard integer types INTEGER
(or INT
) and SMALLINT
. As an extension to the standard, MySQL also supports the integer types TINYINT
, MEDIUMINT
, and BIGINT
. The following table shows the required storage and range for each integer type.
Type | Storage | Minimum Value | Maximum Value |
---|---|---|---|
(Bytes) | (Signed/Unsigned) | (Signed/Unsigned) | |
TINYINT | 1 | -128 | 127 |
0 | 255 | ||
SMALLINT | 2 | -32768 | 32767 |
0 | 65535 | ||
MEDIUMINT | 3 | -8388608 | 8388607 |
0 | 16777215 | ||
INT | 4 | -2147483648 | 2147483647 |
0 | 4294967295 | ||
BIGINT | 8 | -9223372036854775808 | 9223372036854775807 |
0 | 18446744073709551615 |
int的存储上限是2147483647,
所以change_column
class ChangeTotalVvTypeToRecommendedVideos < ActiveRecord::Migration def change change_column :recommended_videos, :total_vv, :integer, :limit => 8 end end
mysql> desc recommended_videos; +-------------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | state | int(11) | YES | | 0 | | | sequence | int(11) | YES | | 1 | | | created_at | datetime | YES | | NULL | | | updated_at | datetime | YES | | NULL | | | total_vv | bigint(20) | YES | | NULL | | +-------------------------+--------------+------+-----+---------+----------------+