Php CodeIgniter不断为int值插入2147483647
每次我尝试将id 1008218499200959或任何其他“long”int值存储到数据库时,它存储为2147483647,并且我将数据长度设置为20,因此我猜长度不应该是问题所在 这是CodeIgniter还是数据库问题 后来我通过将数据类型更改为varchar来修复它,但我仍然想知道它为什么会这样。多谢各位 --表Php CodeIgniter不断为int值插入2147483647,php,mysql,codeigniter,Php,Mysql,Codeigniter,每次我尝试将id 1008218499200959或任何其他“long”int值存储到数据库时,它存储为2147483647,并且我将数据长度设置为20,因此我猜长度不应该是问题所在 这是CodeIgniter还是数据库问题 后来我通过将数据类型更改为varchar来修复它,但我仍然想知道它为什么会这样。多谢各位 --表申请人的表结构 这是一个数据库问题。这是最大的整数,您试图输入一个更大的值。您应该将值定义为decimal(20),而不是int(20) 注意:Codeigniter可能有自己的
申请人的表结构
这是一个数据库问题。这是最大的整数,您试图输入一个更大的值。您应该将值定义为
decimal(20)
,而不是int(20)
注意:Codeigniter可能有自己的问题。问题在于基于您定义的id类型的MySQL。最大的int值为2147483647。查看他们的文档: 其他选项:
- 签名的BIGINT可以让您拨打9223372036854775807
- 未签名的BIGINT可以让您拨打18446744073709551615
- 小数的最大位数为65
(有关更多详细信息,请参阅)。实际上,当我们创建DB时,我们从不给
int
赋值INT
使用4Bytes
存储值,以及2147483647
你可以选择两个选项
int
中删除长度。(只需放置int
)十进制
。因此您也可以定义长度(decimal(20)
)CREATE TABLE IF NOT EXISTS `applicants` (
`id` int(20) NOT NULL,
`first_name` varchar(20) NOT NULL,
`last_name` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;`