2016-01-11 140 views
1

我有最奇怪的問題,插入一行到MyISAM表MysQL忽略int值 - 重複項「KEY PRIMARY」

insert into mytable (id, status, code) values (2534480091, 0, '253448009') 

#1062 - 重複錄入 '2147483647' 關鍵 'PRIMARY'

哪兒它甚至走到如此地步,ID應該插入ID 爲?運行此查詢之前,我已經確定了號:

select id from mytable where id = 2534480091 limit 1;" 

結構

`id` int(11) NOT NULL AUTO_INCREMENT, 
`status` tinyint(1) NOT NULL, 
`code` varchar(64) NOT NULL, 

指數

PRIMARY KEY (`id`), 
KEY `status` (`status`), 
KEY `code` (`code`), 

我已經試過截斷表,檢查它錯誤和修復它。似乎沒有任何工作。

背後的PHP代碼沒有任何問題。在phpMyAdmin中手動傳遞此查詢會顯示完全相同的錯誤。

發生了什麼事?

+1

'數字2,147,483,647(或十六進制7FFF,FFFF)是32位帶符號二進制整數的最大正值' –

+0

使用long int,int太大,所以它只會將id視爲最大值對於int – Phiter

+0

感謝的人,我真的認爲int(11)意味着11位數字。 – tim

回答

2

2147483647是int的最大值。要使用更大的數字,您需要將其聲明爲bigint。

+0

謝謝理查德。這解釋了很多並解決了我的問題。 :) – tim