CodeIgniter继续为int值插入2147483647

时间:2015-10-13 21:47:59

标签: php mysql codeigniter

每次我尝试存储ID 1008218499200959或任何其他“长”字样。对数据库的int值,它存储为2147483647,我的数据长度设置为20,所以长度不应该是我猜的问题。

这是CodeIgniter还是数据库问题?

我后来通过将数据类型更改为varchar来修复它,但我仍然想知道它为什么会这样。谢谢。

- 表applicants

的表结构
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;`

3 个答案:

答案 0 :(得分:5)

问题在于MySQL基于您定义的id类型。最大的int值是2147483647.查看他们的文档:https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

其他选项:

  • 签名BIGINT可以到达9223372036854775807
  • 未签名BIGINT可以转到18446744073709551615
  • DECIMAL的最大位数为65

(有关详情,请参阅https://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html)。

答案 1 :(得分:1)

这是一个数据库问题。这是最大的整数,你试图放入一个更大的值。您应该将值定义为decimal(20)而不是int(20)

注意:Codeigniter可能有这个问题。

答案 2 :(得分:0)

实际上,当我们创建数据库时,我们永远不会给double inputFood(double monkeys[ROWS][COLS]) { string day; // remove monkeys here for (int r = 0; r < ROWS; r++) .... 赋予价值。 int使用INT存储空间来存储值,并使用maximum value作为2147483647。

您可以选择两个选项

  1. 4Bytes移除长度。 (只需放置int
  2. 或使用int。所以你也可以定义长度(decimal