MySQL 错误 #167 - 列的值超出范围,即使它是自动递增的

Chi*_*wda 5 mysql auto-increment sql-insert

我有一个字段(称为 ID),定义为:

smallint(10) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=32768
Run Code Online (Sandbox Code Playgroud)

我有一个查询如下(简化):

INSERT INTO delivery (`ConsigneeName`, `ConsigneePhone`) VALUES ('John Doe', '9999999999')
Run Code Online (Sandbox Code Playgroud)

并且也尝试过

INSERT INTO delivery (`ID`, `ConsigneeName`, `ConsigneePhone`) VALUES (NULL, 'John Doe', '9999999999')
Run Code Online (Sandbox Code Playgroud)

但是,我不断收到错误消息:

#167 - Out of range value for column 'ID' at row 1
Run Code Online (Sandbox Code Playgroud)

那么可能是什么问题呢?我不知所措 - 尝试在字段名称和值上使用 ' 和 ` 只是为了看看这是否是问题所在,但我得到了相同的结果。我什至尝试使用 phpmyadmin 界面插入值(并将 ID 留空),但我得到了同样的错误。

提前感谢您的帮助。

Jen*_*ens 7

您的自动增量在 smallint 日期类型的范围之外开始。所以你不能添加任何条目。将此列的数据类型更改为 int。

请参阅有关数据类型范围的 mysql 文档

小灵通 -32768 32767

  • 我的表已经插入完整,有人通过 DELETE 查询删除数据。如果要重置自动增量值,请使用 TRUNCATE TABLE 查询或 ALTER TABLE tablename AUTO_INCREMENT = 1 (2认同)