2013-05-07 80 views
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.(這不是我的表 - 我只是寫腳本)。

+0

可能有人改變了自動增量的值('ALTER TABLE表名AUTO_INCREMENT = 127;' – jcho360 2013-05-07 16:34:12

回答

4

Tiny int不是auto_increment主鍵的不錯選擇...範圍只是(-128 ... 127)。通常它被用作標誌;你需要使用unsigned int

1

嘗試重置主鍵的自動遞增手動使用此:

ALTER TABLE `beer` AUTO_INCREMENT = 128;