2017-05-30 22 views
0

我有一個字段(稱爲ID),其被定義爲:MySQL錯誤#167 - 非對列範圍的值,即使當它被自動增量

smallint(10) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=32768 

我有一個查詢如下(簡化):

INSERT INTO delivery (`ConsigneeName`, `ConsigneePhone`) VALUES ('John Doe', '9999999999') 

,也有試過

INSERT INTO delivery (`ID`, `ConsigneeName`, `ConsigneePhone`) VALUES (NULL, 'John Doe', '9999999999') 

不過,我不斷收到錯誤:

#167 - Out of range value for column 'ID' at row 1 

那麼會出現什麼問題?我在我的智慧結尾 - 試着用'和'來試驗字段名稱和值,看看這是否是問題,但我得到了同樣的結果。我甚至嘗試了phpmyadmin接口來插入值(並將ID留空),但我得到了同樣的錯誤。

Thanx提前求助。

回答

2

您的自動增量開始於smallint datetype範圍之外。所以你不能添加任何條目。 將此列的數據類型更改爲int。

the mysql documentation有關數據類型的範圍

SMALLINT -32768 32767

+0

爲什麼會自動增量啓動範圍之外?我根本沒有給它任何價值。所以它應該創造一個有效的價值。 – Chiwda

+0

@Chiwda你給:'AUTO_INCREMENT = 32768' – Jens

+0

這是在該領域的定義。我沒有給予任何價值。此外,該表至少爲空,所以它應該從1開始。 – Chiwda