Wie setze ich AUTO_INCREMENT in MySQL zurück?

Wie kann ich die AUTO_INCREMENT eines Feldes zurücksetzen ? Ich möchte, dass es wieder bei 1 beginnt.

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

 ALTER TABLE tablename AUTO_INCREMENT = 1 

Für InnoDB können Sie den auto_increment Wert nicht niedriger oder gleich dem höchsten aktuellen Index setzen. (Zitat von ViralPatel ):

Beachten Sie, dass Sie den Zähler nicht auf einen Wert zurücksetzen können, der kleiner oder gleich dem Wert ist, der bereits verwendet wurde. Wenn der Wert für MyISAM kleiner oder gleich dem Maximalwert ist, der sich derzeit in der Spalte AUTO_INCREMENT befindet, wird der Wert auf das aktuelle Maximum plus eins zurückgesetzt. Bei InnoDB tritt kein Fehler auf und der aktuelle Sequenzwert wird nicht geändert, wenn der Wert kleiner als der aktuelle Maximalwert in der Spalte ist.

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

 ALTER TABLE tablename AUTO_INCREMENT = 1 

Einfach so:

 ALTER TABLE tablename AUTO_INCREMENT = value; 

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

 SET @num := 0; UPDATE your_table SET id = @num := (@num+1); ALTER TABLE your_table AUTO_INCREMENT =1; 

Ich denke, das wird es tun

Bildbeschreibung hier eingeben Es gibt einen sehr einfachen Weg mit phpmyadmin unter der Registerkarte “Operationen”, Sie können in den Tabellenoptionen Autoinkrement auf die gewünschte Nummer setzen.

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.

Es gibt gute Optionen, die in Wie Sie die Autoincrement-Spalte von MySQL zurücksetzen

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

Die am besten bewerteten Antworten auf diese Frage empfehlen “ALTER yourtable AUTO_INCREMENT = value”. Dies funktioniert jedoch nur, wenn der value in der Änderung größer ist 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 dem Wert ist, der bereits verwendet wurde. Wenn der Wert für MyISAM kleiner oder gleich dem Maximalwert ist, der sich derzeit in der Spalte AUTO_INCREMENT befindet, wird der Wert auf das aktuelle Maximum plus eins zurückgesetzt. Für InnoDB können Sie ALTER TABLE … AUTO_INCREMENT = Wert wie in MySQL 5.0.3 verwenden, aber wenn der Wert kleiner als der aktuelle Maximalwert in der Spalte ist, tritt kein Fehler 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. Bei Optionen, mit denen Sie AUTO_INCREMENT tatsächlich von seinem aktuellen Maximum absetzen können, sehen Sie sich den Primärschlüssel für die Neuanordnung / Zurücksetzung des Autoinkrements an .

Hinzufügen eines Updates, da sich die functionalität in MySQL 5.6 geändert hat. Ab MySQL 5.6 können Sie die einfache ALTER TABLE mit InnoDB verwenden:

 ALTER TABLE tablename AUTO_INCREMENT = 1; 

Die Dokumente werden aktualisiert, um dies zu berücksichtigen:

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

Meine Tests zeigen auch, dass die Tabelle NICHT kopiert wird, der Wert wird einfach geändert.

 ALTER TABLE news_feed DROP id ALTER TABLE news_feed ADD id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id) 

Ich habe dies in einigen meiner Skripte verwendet, das ID-Feld wurde gelöscht und dann mit den vorherigen Einstellungen wieder hinzugefügt, alle vorhandenen Felder in der databasetabelle sind mit neuen Autoinkrementwerten gefüllt, dies sollte auch mit InnoDB funktionieren.

Beachten Sie, dass alle Felder in der Tabelle neu gezählt werden und andere IDs haben !!!.

Sie können auch die Syntax TRUNCATE Tabelle wie TRUNCATE TABLE table_name : TRUNCATE TABLE table_name

IN ACHT NEHMEN!! TRUNCATE TABLE your_table löscht alles in deiner your_table !!

es ist für einen leeren Tisch:

 ALTER TABLE `table_name` AUTO_INCREMENT = 1; 

Wenn Sie Daten haben, diese jedoch aufräumen möchten, empfehle ich Folgendes:

 ALTER TABLE `table_name` DROP `auto_colmn`; ALTER TABLE `table_name` ADD `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`); 

Hier ist meine Lösung, aber ich rate nicht, dies zu tun, wenn Ihre Spalte Einschränkungen hat oder als Fremdschlüssel mit anderen Tabellen verbunden ist, da dies negative Auswirkungen hätte oder gar nicht funktionieren würde.

> Zuerst: Drop die Spalte

 ALTER TABLE tbl_name DROP COLUMN column_id 

> Zweitens: Erstelle die Spalte neu und setze sie als FIRST, wenn du sie als erste Spalte annehmen willst.

 ALTER TABLE tbl_access ADD COLUMN `access_id` int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST 

Das funktioniert gut!

Sie können die Tabelle einfach abschneiden, um die Sequenz zurückzusetzen

 TRUNCATE TABLE TABLE_NAME 

Der automatische Inkrementierungszähler für eine Tabelle kann auf zwei Arten (neu) gesetzt werden:

  1. Durch Ausführen einer Abfrage, wie andere bereits erläutert:

    ALTER TABLE AUTO_INCREMENT=;

  2. Verwenden von Workbench oder eines anderen visuellen database-Design-Tools. Ich werde in Workbench zeigen, wie es gemacht wird – aber es sollte nicht viel anders in anderen Werkzeug auch sein. Klicken Sie mit der rechten Maustaste auf die gewünschte Tabelle und wählen Sie im Kontextmenü den Befehl Tabelle ändern. Unten sehen Sie alle verfügbaren Optionen zum Ändern einer Tabelle. Wählen Sie Options und Sie erhalten folgendes Formular: Bildbeschreibung hier eingeben

    Stellen Sie dann einfach den gewünschten Wert im Feld Auto increment wie im Bild gezeigt. Dies führt im Grunde die in der ersten Option gezeigte Abfrage aus.

Ich habe versucht, die Tabelle zu ändern und auto_increment auf 1 setzen, aber es hat nicht funktioniert. Ich habe beschlossen, den Spaltennamen zu löschen, den ich erhöht habe, und dann eine neue Spalte mit Ihrem bevorzugten Namen erstellt und diese neue Spalte so eingestellt, dass sie von Anfang an inkrementiert wird.

Aktualisieren der letzten plus eine ID

  ALTER TABLE table_name AUTO_INCREMENT = (SELECT (id+1) id FROM table_name order by id desc limit 1); 

ALTER TABLE Tabellenname AUTO_INCREMENT = 1

Am besten entfernen Sie das Feld mit AI und fügen es erneut mit AI hinzu, funktioniert für alle Tabellen

Ich empfehle Ihnen, zum Query Browser zu gehen und folgendes zu tun:

  1. Gehe zu Schemata und finde die Tabelle, die du ändern möchtest.
  2. Klicken Sie mit der rechten Maustaste und wählen Sie create create.
  3. Öffnen Sie eine Ergebnis-Registerkarte und fügen Sie die create-statement ein.
  4. Gehe zur letzten Zeile der create-statement und suche nach Auto_Increment = N, (wobei N eine aktuelle Zahl für das Feld auto_increment ist.)
  5. Ersetzen Sie N durch 1.
  6. Drücken Sie Strg + Enter .

Auto_increment sollte auf eins zurückgesetzt werden, sobald Sie eine neue Zeile in der Tabelle eingeben.

Ich weiß nicht, was passieren wird, wenn Sie versuchen, eine Zeile hinzuzufügen, in der ein Auto_increment-Feldwert bereits vorhanden ist.

Ich hoffe das hilft!