0

我有一个包含各种字段的表,包括一个主键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。(这不是我的表——我只是在编写脚本)。

4

2 回答 2

4

Tiny int 不是 auto_increment 主键的好选择...范围只是(-128...127)。通常它被用作标志;你需要使用unsigned int

于 2013-05-07T16:34:36.247 回答
1

尝试使用以下方法手动重置主键的自动增量:

ALTER TABLE `beer` AUTO_INCREMENT = 128;
于 2013-05-07T16:44:35.387 回答