2011-11-13 8 views
5

Funcionó hasta ahora, pero cuando reinicio el servicio, la base de datos perdió el valor de autoincremento para mi tabla. Es seguro algo que hago con mis consultas, porque no modifiqué mis tablas recientemente. ¿Qué podría ser?Aumento automático restablecer a 0 en cada reinicio de servicio

+0

obtenga una lista de todos los procedimientos almacenados y activadores que tiene en su base de datos. Compruébalo por algo sospechoso. Intenta reinstalar el servidor para ver si eso no ayuda –

+0

desencadenadores, no hay procedimientos, solo ocurre al reiniciar el servicio, funciona perfectamente si trunco ​​la tabla y vuelvo a empezar. – Chobeat

+0

Al reiniciar el servicio, ¿quiere decir que reinicia el servidor mysql? – Dimme

Respuesta

2

Ese es el comportamiento documentado, no es un error.
Cuando se inicia el servidor, pasa por cada tabla (InnoDB) determinando cuál debe ser el nuevo valor de auto_increment. De http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html:

InnoDB utiliza el contador de incremento automático en la memoria, siempre que el servidor se ejecute. Cuando el servidor se detiene y se reinicia, InnoDB reinicializa el contador para cada tabla para el primero INSERTAR a la tabla, como se describió anteriormente.

Se hace algo similar cuando implementa DDL que causa una mesa reconstruir, tales como la alteración de la engine - incluso alterarlo al mismo valor que antes.

+0

Eso no explica por qué sería cero. –

0

ALTER TABLE nombre_tabla ENGINE = MyISAM

funciona para mí. InnoDB almacena la IA en la memoria, por lo que se restablece al número actual de filas + 1 cuando se reinicia el servidor mysql. Entonces, si su tabla está vacía cuando reinicia el servidor, se reiniciará a 1.

MyISAM, por otro lado, estaba bien construida.

Cuestiones relacionadas