El incremento automático de MySQL está fuera de sincronización

Escrito por micah mcdunnigan | Traducido por daniela laura arjones
  • Comparte
  • Twittea
  • Comparte
  • Pin
  • E-mail
El incremento automático de MySQL está fuera de sincronización
Los números de identificación perfectamente secuenciales no son necesarios para la función adecuada de la base de datos. (Thinkstock Images/Comstock/Getty Images)

Las tablas de bases de datos tienen números de identificación únicos, llamados claves principales, para cada fila individual. La función de incremento automático de MySQL automáticamente asigna un nuevo número a una columna entera que especificas como clave principal, lo que te ahorra el tiempo necesario para crear tu propia clave principal y el código de seguimiento. Si se te caen filas, sin embargo, la secuencia de valores de incremento automático no se sincroniza con el resto de los valores de la columna.

Otras personas están leyendo

Función de incremento automático

La función de incremento automático funciona manteniendo un registro de los números de identificación de la fila en la tabla en sí. Cuando se designa una columna en particular para su incremento automático, cada vez que se agrega una fila a la tabla, el motor ISAM de MySQL rellena automáticamente esa columna con un valor numérico que es mayor que el valor que identifica la última fila que has añadido. La función no se basa en los datos de tus propias filas, sino tu propio registro del último valor asignado a una fila.

Saliendo de sincronización

Al eliminar las filas de la tabla, se eliminan componentes individuales en la secuencia de los números del motor ISAM asignado a tus filas. Una vez eliminada la cuarta fila, por ejemplo, entonces MySQL no regresa y reasigna valores numéricos en el campo que se incrementan automáticamente, con el fin de mantener la secuencia numérica. Del mismo modo, si MySQL dio a la última fila que agregaste un número de identificación 20 y la eliminas, el motor ISAM todavía asigna la siguiente fila que agregas el valor de 21.

Respuesta de incremento automático

Debido a que el propósito del incremento automático es proporcionar a cada fila de la tabla de MySQL un identificador único, no importa si los números que asigna como identificación tienen agujeros en la secuencia o no. Sólo importa que no haya dos filas con el mismo número de identificación. Los diseños del programa que se basan en una secuencia ininterrumpida de números para navegar la tabla de base de datos no son fiables, ya que las filas caídas de las bases de datos pueden provocar un mal funcionamiento. Carga los datos de la fila en un objeto de matriz y el uso de índices del elemento es un enfoque más estable.

Solución

Para mantener tu columna de incremento automático de la secuencia perfecta, arregla los agujeros después de eliminar las filas de la tabla. Cuando dejas caer toda la columna, MySQL también descarta su propio registro del siguiente número que utilizará para la siguiente fila que asignas a esa tabla. Al volver a crear la columna con la misma sintaxis de incremento automático, MySQL automáticamente rellena la columna con una secuencia ordenada de números para cada fila que tienes actualmente en la base de datos. Sin embargo, para mantener una secuencia perfecta, hay que repetir este paso cada vez que se cae una fila de la tabla.

No dejes de ver

Filtrar por:
  • Mostrar todos
  • Artículos
  • Galerías de fotos
  • Videos
Ordenar:
  • Más relevante
  • Más popular
  • Más reciente

No se encuentran artículos disponibles

No se encuentran slideshows disponibles

No se encuentran videos disponibles