如何重置字段的AUTO_INCREMENT?
我希望它再次从1开始计数。
如何重置字段的AUTO_INCREMENT?
我希望它再次从1开始计数。
当前回答
如果您使用PHPStorm的数据库工具,则必须在数据库控制台中输入:
ALTER TABLE <table_name> AUTO_INCREMENT = 0;
其他回答
SET @num := 0;
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;
我试图更改表并将auto_increment设置为1,但没有成功。我决定删除正在递增的列名称,然后用您的首选名称创建一个新列,并将该新列设置为从开始递增。
ALTER TABLE news_feed DROP id
ALTER TABLE news_feed ADD id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id)
我在一些脚本中使用了这个。id字段将被删除,然后添加回以前的设置。数据库表中的所有现有字段都用新的自动递增值填充。这也适用于InnoDB。
请注意,表中的所有字段都将被重新计数,并且将具有其他ID!!!。
此问题的最高评分答案都建议“ALTER yourtable AUTO_INCREMENT=value”。然而,这仅在alter中的值大于自动递增列的当前最大值时有效。根据MySQL 8文档:
不能将计数器重置为小于或等于当前使用的值。对于InnoDB和MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前最大AUTO_INCREENT列值加1。
实际上,您只能更改AUTO_INCREMENT以增加自动递增列的值,而不能将其重置为1,正如OP在问题的第二部分中所要求的那样。对于实际允许您从当前最大值向下设置AUTO_INCREMENT的选项,请查看重新排序/重置自动递增主键。
警告:如果您的列具有约束或作为外键连接到其他表,这将产生不良影响。
首先,删除列:
ALTER TABLE tbl_name DROP COLUMN column_id
接下来,重新创建列并将其设置为FIRST(如果您希望它作为我假设的第一列):
ALTER TABLE tbl_access ADD COLUMN `access_id` int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST