Question Comment réinitialiser AUTO_INCREMENT dans MySQL?


Comment puis-je réinitialiser la AUTO_INCREMENT d'un champ? Je veux que ça commence à compter 1 encore.


980
2018-01-19 08:37


origine


Réponses:


Vous pouvez réinitialiser le compteur avec:

ALTER TABLE tablename AUTO_INCREMENT = 1

Pour InnoDB, vous ne pouvez pas définir le auto_increment valeur inférieure ou égale à 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 à   à ceux qui ont déjà été utilisés. Pour MyISAM, si la valeur est inférieure   supérieur ou égal à la valeur maximale actuellement dans le AUTO_INCREMENT   colonne, la valeur est réinitialisée au maximum actuel plus un. Pour   InnoDB, si la valeur est inférieure à la valeur maximale actuelle dans   colonne, aucune erreur ne se produit et la valeur de séquence actuelle n'est pas modifiée.

Voir Comment réinitialiser un AutoIncrement MySQL en utilisant une valeur MAX d'une autre table? sur comment obtenir dynamiquement une valeur acceptable.


1654
2018-01-19 08:39



ALTER TABLE tablename AUTO_INCREMENT = 1

120
2018-01-19 08:39



Simplement comme ceci:

ALTER TABLE tablename AUTO_INCREMENT = value;

référence: 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;

Je pense que ça va le faire


49
2018-05-04 16:21



enter image description hereIl y a un moyen très simple avec phpmyadmin sous l'onglet "opérations", vous pouvez définir, dans les options du tableau, l'auto-incrémentation au nombre que vous voulez.


37
2018-05-03 20:20



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;

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


29
2017-09-16 22:39



Il y a de bonnes options données dans Comment réinitialiser la colonne d'auto-incrustation MySQL

Notez que ALTER TABLE tablename AUTO_INCREMENT = value; Est-ce que ne pas travailler pour InnoDB


20
2017-09-19 09:14



Les réponses les mieux notées à cette question recommandent toutes "ALTER yourtable AUTO_INCREMENT = value". Cependant, cela ne fonctionne que lorsque value dans l'alter est supérieur à la valeur max actuelle de la colonne auto-incrémentée. Selon la documentation de MySQL:

Vous ne pouvez pas réinitialiser le compteur à une valeur inférieure ou égale à   ont déjà été utilisés. Pour MyISAM, si la valeur est inférieure ou égale   à la valeur maximale actuellement dans la colonne AUTO_INCREMENT, la valeur   est réinitialisé au maximum actuel plus un. Pour InnoDB, vous pouvez utiliser   ALTER TABLE ... AUTO_INCREMENT = valeur à partir de MySQL 5.0.3, mais si le   la valeur est inférieure à la valeur maximale actuelle dans la colonne, aucune erreur   se produit et la valeur de séquence actuelle n'est pas modifiée.

En substance, vous ne pouvez modifier AUTO_INCREMENT que pour augmenter la valeur de la colonne auto-incrémentée, et non la réinitialiser à 1, comme le demande l'OP dans la deuxième partie de la question. Pour les options qui vous permettent réellement de définir AUTO_INCREMENT à la baisse de son maximum actuel, jetez un oeil à Réorganiser / réinitialiser la clé primaire d'incrémentation automatique.


16
2017-12-09 20:39



Ajout d'une mise à jour car la fonctionnalité a changé dans MySQL 5.6. A partir de MySQL 5.6 vous pouvez utiliser le simple ALTER TABLE avec InnoDB:

ALTER TABLE tablename AUTO_INCREMENT = 1;

Les documents sont mis à jour pour refléter ceci:

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

Mes tests montrent également que la table n'est PAS copiée, la valeur est simplement modifiée.


15
2017-09-25 19:28



ALTER TABLE news_feed DROP id

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

Je l'ai utilisé dans certains de mes scripts, le champ id est supprimé et ensuite ajouté avec les paramètres précédents, tous les champs existants dans la table de base de données sont remplis avec de nouvelles valeurs d'incrémentation automatique, cela devrait également fonctionner avec InnoDB.

Notez que tous les champs de la table seront recomptés et auront d'autres identifiants !!!


11
2018-05-15 05:57