
26/04/2008, 08:30
|
 | Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 3 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). |