Frage Wie setze ich AUTO_INCREMENT in MySQL zurück?


Wie kann ich zurücksetzen das AUTO_INCREMENT eines Feldes? Ich möchte, dass es beginnt, zu zählen 1 nochmal.


980
2018-01-19 08:37


Ursprung


Antworten:


Sie können den Zähler zurücksetzen mit:

ALTER TABLE tablename AUTO_INCREMENT = 1

Für InnoDB können Sie das nicht einstellen auto_increment Wert niedriger oder gleich dem höchsten aktuellen Index. (Zitat aus ViralesPatel):

Beachten Sie, dass Sie den Zähler nicht auf einen Wert kleiner oder gleich zurücksetzen können   zu irgendwelchen, die schon benutzt worden sind. Für MyISAM, wenn der Wert kleiner ist   als oder gleich dem Maximalwert, der sich momentan in AUTO_INCREMENT befindet   Spalte wird der Wert auf das aktuelle Maximum plus eins zurückgesetzt. Zum   InnoDB, wenn der Wert kleiner ist als der aktuelle Maximalwert in der   Spalte, kein Fehler auftritt und der aktuelle Sequenzwert wird nicht geändert.

Sehen Wie setze ich ein MySQL AutoIncrement mit einem MAX-Wert aus einer anderen Tabelle zurück? wie man einen akzeptablen Wert dynamisch erhält.


1654
2018-01-19 08:39



ALTER TABLE tablename AUTO_INCREMENT = 1

120
2018-01-19 08:39



Einfach so:

ALTER TABLE tablename AUTO_INCREMENT = value;

Referenz: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html


52
2018-01-19 08:40



SET  @num := 0;

UPDATE your_table SET id = @num := (@num+1);

ALTER TABLE your_table AUTO_INCREMENT =1;

Ich denke, das wird es tun


49
2018-05-04 16:21



enter image description hereEs gibt einen sehr einfachen Weg mit phpmyadmin unter der Registerkarte "Operationen", Sie können in den Tabellenoptionen Autoinkrement auf die gewünschte Nummer setzen.


37
2018-05-03 20:20



Die beste Lösung, die für mich funktionierte:

ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED;
COMMIT;
ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT;
COMMIT;

Es ist schnell, arbeitet mit innoDB, und ich muss den aktuellen Maximalwert nicht kennen! Auf diese Weise wird der automatische Inkrementzähler zurückgesetzt und startet automatisch mit dem Maximalwert.


29
2017-09-16 22:39



Es gibt gute Optionen in Vorgehensweise zum Zurücksetzen der MySQL Autoinkrement-Spalte

Beachten Sie, dass ALTER TABLE tablename AUTO_INCREMENT = value; tut nicht arbeite für InnoDB


20
2017-09-19 09:14



Die am besten bewerteten Antworten auf diese Frage empfehlen "ALTER yourtable AUTO_INCREMENT = value". Dies funktioniert jedoch nur, wenn value in der Alter ist größer als der aktuelle Maximalwert der Autoinkrement-Spalte. Laut der MySQL-Dokumentation:

Sie können den Zähler nicht auf einen Wert zurücksetzen, der kleiner oder gleich ist   wurden bereits benutzt. Für MyISAM, wenn der Wert kleiner oder gleich ist   auf den Maximalwert, der sich derzeit in der Spalte AUTO_INCREMENT befindet, der Wert   wird auf das aktuelle Maximum plus eins zurückgesetzt. Für InnoDB können Sie verwenden   ALTER TABLE ... AUTO_INCREMENT = Wert wie in MySQL 5.0.3, aber wenn der   Wert ist kleiner als der aktuelle Maximalwert in der Spalte, kein Fehler   tritt auf und der aktuelle Sequenzwert wird nicht geändert.

Im Wesentlichen können Sie AUTO_INCREMENT nur ändern, um den Wert der Autoinkrement-Spalte zu erhöhen, nicht auf 1 zurücksetzen, wie das OP im zweiten Teil der Frage fragt. Für Optionen, mit denen Sie AUTO_INCREMENT von seinem aktuellen Maximum aus nach unten setzen können, sehen Sie sich an Reorder / Reset Auto-Inkrement-Primärschlüssel.


16
2017-12-09 20:39