没有值重复时,重复键输入

kmo*_*y12 4 php mysql sql pdo

当没有值相同时,我得到一个非常奇怪的重复输入错误...

INSERT INTO offer_status (id,user_id,sql_id,disabled) 
VALUES ('8854011812','8854','11812','0')
Run Code Online (Sandbox Code Playgroud)

返回:

#1062 - 键'PRIMARY'的重复条目'2147483647'

这对我来说根本没有意义!

注意:此代码通常不会执行,我只是尝试调试.通常在我的PHP中我有:

$offer=$campid;
$id=$user_id.'0'.$offer;
$sql="INSERT INTO offer_status (id,user_id,sql_id,disabled) VALUES (?,?,?,?)
ON DUPLICATE KEY UPDATE disabled=VALUES(disabled)";

    $db->prepare($sql)->execute(array($id, $user_id, $offer, 0));
Run Code Online (Sandbox Code Playgroud)

id是主键.这里发生了什么?

补充:结果DESC offer_status:

Field   Type    Null    Key Default Extra
id  int(12) NO  PRI NULL    
user_id int(12) NO      NULL    
sql_id  int(12) NO  MUL NULL    
favor   tinyint(4)  NO      0   
disabled    tinyint(4)  NO      0   
pref    int(2)  NO      0   
Run Code Online (Sandbox Code Playgroud)

jue*_*n d 13

8854011812超出int范围.它将被最大int数字取代2147483647.

第二次插入比intmax 更大的值时,将出现重复键错误.

如果您需要如此高的数字,可以将数据类型更改为bigint.