如何重置MySQL中的auto_increment值

时间:2015-01-02 06:13:31

标签: mysql auto-increment alter

即使在参考其他帖子后进行更改

,我也无法重置auto_increment值

我试过了:

ALTER TABLE tablename AUTO_INCREMENT = 101

ALTER TABLE users AUTO_INCREMENT=1001;

或者如果您还没有添加ID列,也请添加

ALTER TABLE users ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ADD INDEX (id);

但仍然无法正常工作

检查一下:

mysql> ALTER TABLE table2 ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    -> ADD INDEX (id);
Query OK, 5 rows affected (0.17 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select * from table2;
+----------------+----+
| name           | id |
+----------------+----+
| Abhilash Gupta |  1 |
| John           |  2 |
| Peter          |  3 |
| Clarke         |  4 |
| Virat          |  5 |
+----------------+----+
5 rows in set (0.00 sec)

mysql> ALTER TABLE table2 AUTO_INCREMENT=101;
Query OK, 5 rows affected (0.25 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select * from table2;
+----------------+----+
| name           | id |
+----------------+----+
| Abhilash Gupta |  1 |
| John           |  2 |
| Peter          |  3 |
| Clarke         |  4 |
| Virat          |  5 |
+----------------+----+
5 rows in set (0.00 sec)

mysql>

我希望id的值从101开始。 提前致谢

3 个答案:

答案 0 :(得分:2)

如果要将现有ID更改为从101开始,请使用:

UPDATE table2
SET id = id + 100;

auto_increment设置用于添加下一行的ID,它对现有行没有影响。

答案 1 :(得分:0)

请点击此链接以参考AUTO INCREMENT

现在你正在做的是我认为是正确的,但是由于你没有尝试向数据库输入新行,所以没有反映出这些变化。 Alter命令更改AUTO INCREMENTS值,但这只会反映在数据库的下一个插入中。它不会影响TABLE中已存在的数据。尝试在数据库中输入新行并检查ID值是否发生变化 如果没有,则在输入该行后发布输出。

答案 2 :(得分:0)

这就是应该写的方式

cur.execute('''ALTER TABLE tablename AUTO_INCREMENT=0''')