2014-11-24 56 views
0

表的样子:MySQL的:奇怪的AUTO_INCREMENT

mysql> DESC text; 
+-----------------+--------------+------+-----+-------------------+----------------+ 
| Field   | Type   | Null | Key | Default   | Extra   | 
+-----------------+--------------+------+-----+-------------------+----------------+ 
| id    | int(11)  | NO | PRI | NULL    | auto_increment | 
| text   | varchar(255) | YES |  | NULL    |    | 
+-----------------+--------------+------+-----+-------------------+----------------+ 
2 rows in set (0.00 sec) 

AUTO_INCREMENT为1:

mysql> ALTER TABLE text AUTO_INCREMENT = 1; 
Query OK, 1 row affected (0.36 sec) 
Records: 1 Duplicates: 0 Warnings: 0 

,但我得到了奇怪的ID,如:

mysql> SELECT id FROM text; 
+------------+ 
| id   | 
+------------+ 
| 2147483647 | 
+------------+ 
1 row in set (0.00 sec) 

是什么问题?

+1

将表格截断一次,然后在插入新行时检查ID。 – Aditya 2014-11-24 12:08:15

+0

我为什么要截断它?测试前我已经重置了AUTO_INCREMENT。 – user4166144 2014-11-24 12:09:09

+0

您重新设置了** next **插入的默认值。但当前的数据不会改变 – 2014-11-24 12:10:50

回答

1

当您更改设置为greatest(your_value,max(column)+ 1)

虽然我不能找到其中提到它的文档的部分自动递增,这是在评论

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

ALTER TABLE text AUTO_INCREMENT = 1; 

然后检查结果

SELECT `AUTO_INCREMENT` 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'DatabaseName' 
AND TABLE_NAME = 'text'; 

to co确认其实际不是1