2011-11-13 11 views
5

Ha funzionato fino ad ora ma quando ho riavviato il servizio, il database ha perso il valore di incremento automatico per la mia tabella. È sicuramente qualcosa che faccio con le mie query, perché non ho modificato le mie tabelle di recente. Cosa potrebbe essere?L'incremento automatico viene reimpostato su 0 ad ogni riavvio del servizio

+0

ottenere un elenco di tutte le stored procedure e i trigger presenti sul DB. Controllalo per qualcosa di sospetto. Prova a reinstallare il server per vedere se questo aiuta –

+0

nessun trigger, nessuna procedura, succede solo al riavvio del servizio, funziona perfettamente se ho troncato la tabella e ricominciare da capo. – Chobeat

+0

Per riavvio del servizio si intende il riavvio del server mysql? – Dimme

risposta

2

Questo è il comportamento documentato, non è un bug.
Quando il server si avvia, passa attraverso ciascuna tabella (InnoDB) determinando quale dovrebbe essere il nuovo valore auto_increment. Da http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html:

InnoDB utilizza il contatore di incremento automatico in memoria finché il server è in esecuzione. Quando il server viene arrestato e riavviato, InnoDB reinizializza il contatore per ogni tabella per il prima di INSERT sulla tabella, come descritto in precedenza.

Si fa qualcosa di simile quando si distribuisce DDL che provoca un tavolo ricostruire, come ad esempio alterando il engine - anche alterarla allo stesso valore che era prima.

+0

Questo non spiega perché sarebbe zero. –

0

ALTER TABLE nome_tabella ENGINE = MyISAM

funziona per me. InnoDB memorizza l'IA in memoria, quindi viene ripristinato sul numero corrente di righe + 1 quando viene riavviato il server mysql. Quindi se la tua tabella è vuota quando riavvii il server, verrà ripristinata a 1.

MyISAM d'altra parte era ben costruita.

Problemi correlati