将新项插入已填充的表中

时间:2013-05-07 16:31:27

标签: mysql sql

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

ALTER TABLE `beer` AUTO_INCREMENT = 128;