1497 votes

Comment réinitialiser AUTO_INCREMENT dans MySQL ?

Comment puis-je réinitialiser le site AUTO_INCREMENT d'un champ ?
Je veux qu'il commence à compter à partir de 1 encore.

10 votes

Vous obtiendrez peut-être une meilleure réponse sur le site des DBA à l'adresse suivante dba.stackexchange.com

94 votes

Vous voudrez probablement vider la table aussi : TRUNCATE TABLE yourTableName;

3 votes

2423voto

Niels Points 17414

Vous pouvez remettre le compteur à zéro avec :

ALTER TABLE tablename AUTO_INCREMENT = 1

Pour InnoDB, vous ne pouvez pas définir le paramètre auto_increment inférieur ou égal à l'indice actuel le plus élevé. (citation de ViralPatel ):

Notez que vous ne pouvez pas réinitialiser le compteur à une valeur inférieure ou égale à à celles qui ont déjà été utilisées. Pour MyISAM, si la valeur est inférieure à inférieure ou égale à la valeur maximale actuellement dans la colonne AUTO_INCREMENT la valeur est réinitialisée à la valeur maximale actuelle plus un. Pour InnoDB, si la valeur est inférieure à la valeur maximale actuelle de la colonne aucune erreur ne se produit et la valeur de la séquence actuelle n'est pas modifiée.

Voir Comment réinitialiser un auto-incrément MySQL en utilisant une valeur MAX d'une autre table ? sur la façon d'obtenir dynamiquement une valeur acceptable.

9 votes

Cela peut prendre une éternité pour une table remplie. Soyez prudent avec cela : stackoverflow.com/questions/2681869/

56 votes

Il s'agit d'un circular reference

7 votes

Que voulez-vous dire par curcular reference ?

153voto

boobiq Points 1078
ALTER TABLE table AUTO_INCREMENT = 1

72voto

fyr Points 7756

Tout simplement comme ça :

ALTER TABLE tablename AUTO_INCREMENT = value;

référence : http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

6 votes

reset signifie qu'il faut le mettre à la valeur par défaut ... donc vous pouvez remplacer "valeur" par 1

51voto

Miles M. Points 948

enter image description here Il existe un moyen très simple avec phpmyadmin, sous l'onglet "opérations", vous pouvez définir, dans les options de la table, l'auto-incrémentation au nombre que vous voulez.

0 votes

Vous devez redémarrer le service / serveur mysql juste après.

3 votes

Je ne pense pas que vous ayez besoin de redémarrer votre serveur après cela. PhpAdmin va juste exécuter la commande pour changer le point de départ de l'incrémentation.

1 votes

Vous n'avez pas besoin de redémarrer, cela prend effet à partir de l'insertion suivante.

41voto

trust_words Points 25

La meilleure solution qui a fonctionné pour moi :

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

Il est rapide, fonctionne avec innoDB, et je n'ai pas besoin de connaître la valeur maximale actuelle ! De cette façon, le compteur à incrémentation automatique sera remis à zéro et il démarrera automatiquement à partir de la valeur maximale existante.

1 votes

Il définira la valeur NULL auto-inc sur information_schema ; vérifier SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = 'my_table' AND table_schema = DATABASE( ) ;

1 votes

J'ai testé sur la version 5.6.x et cela a parfaitement fonctionné, et la requête de Kerem Günes a retourné la valeur maximale plus un, PAS null comme indiqué. (peut-être qu'elle est définie comme nulle après la première requête, mais elle ne l'est pas après la deuxième requête) Je pense que c'est la meilleure solution pour InnoDB.

0 votes

Identique à la valeur explicite : " créer une nouvelle table, avec la même structure et la nouvelle valeur d'auto_incrément et copier tous les enregistrements de la table originale, supprimer l'originale et renommer la nouvelle. Cela peut avoir un impact considérable sur les performances (et l'espace disque) dans les environnements de production si la table est grande", mais c'est bien pire car il faut copier la table deux fois.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X