我數(shù)據(jù)庫(kù)這個(gè)數(shù)據(jù)才幾十萬(wàn)條 主鍵是 int 11 然后以前能插入 現(xiàn)在插入 就會(huì)報(bào)這個(gè)錯(cuò)誤
求解答 謝謝
首先說(shuō)講清楚幾個(gè)概念
int(11) 和int(3) 存儲(chǔ)的值的最終大小是一樣的,這個(gè)3和11 是在終端顯示的時(shí)候數(shù)字長(zhǎng)度,和存儲(chǔ)數(shù)字大小和長(zhǎng)度無(wú)關(guān)
11萬(wàn)的數(shù)據(jù),你的主鍵應(yīng)該不是步長(zhǎng)加1,或者你id也可能不是自增0開(kāi)始的。
還有樓上的已經(jīng)說(shuō)清楚原因,說(shuō)是主鍵的值重復(fù),那就先去數(shù)據(jù)庫(kù)找找這條記錄,然后再看看 10多萬(wàn)的數(shù)據(jù),怎么主鍵到了4294967295
2的32次方=4294967296(無(wú)符號(hào)),帶符號(hào)再除以2,負(fù)數(shù)比正數(shù)多一個(gè),-2147483648~+2147483647 int型無(wú)符號(hào) 4294967296 最大值
這說(shuō)是鍵重復(fù)了,試試這個(gè),不保證有用····
step 1: select max(your primary_key_field) from your_table_name;
step 2: ALTER TABLE your_table_name AUTO_INCREMENT = value_u_got_from_step1 + 1;
id自增已達(dá)上限,再插入數(shù)據(jù)也只能插入這個(gè)id值,所以才會(huì)沖突,改成bigint類型即可,十幾萬(wàn)數(shù)據(jù)就自增到這個(gè)值,你要檢查一下你的自增規(guī)則和業(yè)務(wù)邏輯,否則按你的速度很快還會(huì)到上限