Cuestión : ¡El motor de InnoDB reutiliza IDs del auto_increment!!

He funcionado en un problema con el motor de InnoDB: pierde la pista del número siguiente para las columnas del auto_increment después de que recomenzar del servidor. Y eso puede hacer IDs de filas suprimidas ser reasignado a las nuevas filas. el

This es realmente un problema para mi aplicación web: algunas tablas tienen referencias a otras tablas. Y si los IDs suprimidos consiguen reutilizados para los nuevos récores, después esas referencias señalar repentinamente a otros expedientes con nuevos datos en vez a las filas suprimidas. Esto es muy confuso y puede llevar a los problemas grandes, grandes con consistencia de la base de datos. la tabla del

Every en mi base de datos tiene una columna de la llave primaria nombrada la “identificación”, que se define como auto_increment. Y confié en la asunción que ésa aseguraría las llaves primarias únicas para todos los expedientes de base de datos. el

I ha leído que MyISAM no sufre de esto, pero que el motor falta algunas características que necesite, como eg. fijación y transacciones del fila-nivel. ¿el

How puede yo prevenir la pista perdidosa del nuevo valor más alto del autonumber después de que el servidor recomience, de modo que los IDs de filas suprimidas no consigan reasignados?
class= del

Respuesta : ¡El motor de InnoDB reutiliza IDs del auto_increment!!

No sé una aplicación web sabría si el DB fue recomenzado a menos que si usted almacena algo como el pid del caso del mysql en disco cada vez usted acceso la página.

AUTORIZACIÓN, ahora que pienso en ella, porqué no hacer esto: Cada vez que usted funciona el uso, excepto el last_insert_id () a un archivo local.

Antes de que usted funcione con un parte movible, comprobar ese archivo y compararlo al número siguiente del auto_increment

SELECCIONAR AUTO_INCREMENT de information_schema.TABLES DONDE
      TABLE_SCHEMA = BASE DE DATOS () Y TABLE_NAME = “lo que”

Entonces, si el archivo local tiene iguales o el mayor, fijar el auto_increment a uno más que el mayor número. Si no, no preocuparse.
Otras soluciones  
 
programming4us programming4us