Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/04/2008, 08:30
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Re: problema con envío de mail

Puede ser que tengas definido el ID como SMALLINT, lo que implicaría que tu rango de representación es de -32768 a 32767.
Es un error comun el dejar la definición de un número de esa forma, suponiendo que se representará el total de los dos bytes (65535), pero si no lo especifica, el sistema reserva la mitad de los binarios para representar enteros negativos, lo que da como resultado que no puedes incrementarlo más allá de 32767. De esa forma, cuando el proceso del auto_icrement intenta sumarle uno, sólo puede llegar a ese valor, por lo que desborda, aparece un número que ya se usó e intenta insertar ése.
Obviamente el error es porque el número se está duplicando.
La solución es sencilla: redefínele la longitud al ID, y ponlo como INT UNSIGNED. De esa forma el rango llegará hasta 4.294.967.295. Si lo haces como BIGINT UNSIGNED, será de 18.446.744.073.709.551.615. La pregunta es si realmente vas a usar tanto rango (además estarías usando 8 bytes por campo ID).