2

我在 mysql db (app_id, dated) 中创建了一个两列键,当我运行以下查询时出现问题

INSERT INTO `facebook_application_shares` (`user_id`, `app_id`, `dated`, `stats`) VALUES ('80', '269456199802533', '2012-04-24', '0')

我收到以下错误 - 即使 app_id 是 269456199802533 而不是 2147483647

Duplicate entry '2147483647-2012-04-24' for key 1

然后当我检查实际的数据库表时,值实际上是“2147483647”

我对此感到非常困惑

在此处输入图像描述

4

1 回答 1

4

2147483647, 或, 是能够存储在列0x7FFFFFFF中的最大数字(您似乎是)。更大的值只会被截断。MySQLINT SIGNEDapp_id

做你app_idBIGINT UNSIGNED.

请注意,INT(100)它仍然是一个4-bit整数,并带有一个可选提示,提示应用程序不要显示多个100数字:

应用程序可以使用此可选显示宽度来显示宽度小于为列指定的宽度的整数值,方法是用空格向左填充它们。(也就是说,这个宽度存在于与结果集一起返回的元数据中。是否使用它取决于应用程序。)

并不是说它真的能够存储一个googol - 1.

于 2012-04-27T13:53:24.757 回答