2011-09-27 13 views
5

Estoy insertando decir 500 filas usando INSERTAR IGNORAR, si la fila ya existe (basada en un campo único) entonces simplemente no hace nada, si no inserta la fila.¿Cómo puedo detener el incremento automático en las inserciones ignoradas que no hacen cambios en MySQL?

Mi problema es que dicen que solo 10 NO existen, el incremento automático aún aumenta para cada inserción, por lo que aumenta en 500, así que termino con huecos en mi identificación. ¿Cómo paro esto?

que he intentado:

SET global innodb_autoinc_lock_mode = 0; 

pero me sale el error:

1238 - Variable 'innodb_autoinc_lock_mode' es una lectura única variable

¿Cómo puedo cambiar esto?

+0

Posible duplicado: http://stackoverflow.com/questions/5655396/why-insert-ignore-increments-the-auto-increment-primary-key –

+0

Gracias por el enlace, lo he visto y editado mi pregunta para incluir lo que he intentado. – Craig

+5

¿por qué * cuidas * si hay lagunas? – SingleNegationElimination

Respuesta

10

De acuerdo con MySQL's documentation, el innodb_autoinc_lock_mode no es una variable dinámica y, por lo tanto, no se puede cambiar mientras se está ejecutando MySQL.

ya sea que usted tiene que fijar en la línea de comandos

--innodb_autoinc_lock_mode=0 

o en el archivo de configuración (mysql.ini)

innodb_autoinc_lock_mode=0 

Cabe señalar que no se debe (leer : nunca) confía en una secuencia de identificación continua. Las transacciones revertidas o fallidas pueden generar lagunas.

+0

Gracias. Agregué esa línea al archivo my.cnf y reinicié mysql – Craig

Cuestiones relacionadas