2013-07-06 4 views
0

J'ai une table appelée ordre avec son nom de colonne 'id' est mis en incrément automatique, l'incrément automatique a sauté à 9090000 de 6999 avec un écart de 9090000-6999, je voulais juste savoir comment est-il arrivé?Valeur d'incrémentation automatique Mysql numéro

+1

avez-vous parfois avant éléments insérés et les supprimer à nouveau sans tronquer la table entière? – luk2302

+2

cela pourrait être utile http://stackoverflow.com/questions/10042042/mysql-auto-increment-id-suddenly-jumped-to-maxint-what-could-be-a-reason –

+0

non je n'ai pas fait un tel les choses, comme c'est mon live db ..! –

Répondre

1

Si un ID est spécifié comme 9090000 lorsqu'il est inséré, la valeur d'incrémentation automatique est ajustée en conséquence. Ceci est fait pour éviter les collisions plus tard lorsque l'identifiant a éventuellement atteint le plus grand nombre.

Si l'identifiant plus grand est supprimé ultérieurement, la modification de l'incrément automatique reste.


Il est possible de définir explicitement comme suit:

alter table mytable auto_increment = 9090000 
+0

Non je n'ai rien spécifié directement –

+0

Peut-être que quelqu'un d'autre a, ou votre application a fait par inadvertance à cause d'un bug. Voir aussi modifier pour savoir comment le définir explicitement. – Bohemian

+0

Cela peut arriver en raison de bugs dans votre programme le plus probable, par exemple, j'ai eu une table de journal dans ma base de données que j'ai utilisé pour la journalisation et le débogage. Soudain, quand j'ai créé un nouvel ordre, qui aurait dû avoir un identifiant d'environ 5, il avait un identifiant de 7965, parce que j'utilisais 'PDO :: lastInsertId()' pour obtenir le dernier id inséré de l'ordre, mais a été changé en celui du journal. –

Questions connexes