我在mysql数据库中创建了一个两列键(app_id,dated),当我运行下面的查询时,我遇到了一个问题

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

我得到以下错误-即使应用程序id是269456199802533而不是2147483647
Duplicate entry '2147483647-2012-04-24' for key 1

然后当我检查实际的db表时,值实际上是“2147483647”
我很困惑

最佳答案

21474836470x7FFFFFFFMySQL可以存储在INT SIGNED列中的最大数(您似乎是这样)。更大的值会被截断。
使您的app_idaapp_id
注意BIGINT UNSIGNED仍然是一个INT(100)整数,其中an optional hint to an application不显示大于4-bit的数字:
应用程序可以使用此可选显示宽度来显示整数值,该整数值的宽度小于通过用空格左填充为列指定的宽度。(也就是说,此宽度存在于结果集返回的元数据中。是否使用取决于应用程序。)
并不是说它真的能够存储100

10-08 18:47