Ho una tabella MySQL con una colonna id autoincrementata. L'ID è iniziato da 1 ed è ora nei 4000.Cosa succede quando l'autoincremento si scontra con i dati esistenti in MySQL?
Tuttavia, ho anche bisogno di portare alcuni dati legacy in questa tabella da una vecchia versione dell'applicazione. Gli ID di questi dati partono da 5000 e devono essere conservati a fini di controllo.
Cosa succede se inserisco una voce dopo che il contatore di autoincremento è impostato su 4999? L'autoincremento è abbastanza intelligente da cercare il prossimo ID disponibile o si blocca perché tenta di inserire l'id 5000, che già esiste?
Mentre i consigli su come risolvere questo problema sono molto utili, mi piacerebbe anche capire cosa farebbe MySQL in questa situazione e se dovessi intervenire del tutto.
Abbiamo qualcosa in corso in una tabella innoDB transazionale in cui è autoincrementante verso l'alto, ma al di sotto dell'ID massimo. Penso che questo semplice test sia semplicemente troppo semplice. Sono abbastanza sicuro che mysql salterà automaticamente gli ID esistenti, ma io non sono al 100% –
Sì, abbiamo su innoDb autoincrement inferiore a max (id), non shure cosa succederà –
Il problema con il test qui è che hai inserito con una normale istruzione di inserimento. Ho avuto un sacco di problemi in cui ho regolarmente ripristinato un database di produzione su un server di sviluppo e gli incrementi automatici del server di sviluppo non si aggiornano e quindi entrano in collisione con i record ora esistenti derivati dalla produzione quando vado a creare una nuova voce in dev. –