我有一个包含各种字段的表格,包括主键id
,它是自动递增的:
+-------------------------------+------------------+------+-----+---------+
| Field | Type | Null | Key | Default | Extra
+-------------------------------+------------------+------+-----+---------+
| id | tinyint(11) | NO | PRI | NULL | auto_increment
该表已填充了114个项目:
mysql> select count(*) as cnt from beer;
+-----+
| cnt |
+-----+
| 114 |
+-----+
我正在尝试在表格中插入一组新项目。我没有明确插入id键。这是一个示例查询:
mysql> INSERT INTO beer (name, type, alcohol_by_volume, description, image_url)
VALUES('Test Ale', 1, '4.6', '', 'https://untappd.s3.amazonaws.com/site/assets/images/temp/badge-beer-default.png');
尝试手动插入该查询时出现以下错误(插入实际上是使用PHP脚本完成相同的结果):
ERROR 1062 (23000): Duplicate entry '127' for key 1
发生了什么事?我以为id会在插入时自动递增。我应该注意,由于某种原因,前13个条目为空/空,最后一个键目前为127.(这不是我的表 - 我只是编写脚本)。
答案 0 :(得分:4)
Tiny int不是auto_increment主键的好选择......范围只是(-128 ... 127)。通常它被用作旗帜;你需要使用unsigned int
答案 1 :(得分:1)
尝试使用以下方法手动重置主键的自动增量:
ALTER TABLE `beer` AUTO_INCREMENT = 128;