
12/02/2009, 10:51
|
 | | | Fecha de Ingreso: noviembre-2003 Ubicación: Buenos Aires - Argentina
Mensajes: 442
Antigüedad: 21 años, 4 meses Puntos: 1 | |
Tengo una tabla paises seteada de la siguiente manera:
idpais smallint (3) Autoincrement Primary Key
codpais char (2)
nompais varchar (40)
Los números de Idpaís llegan hasta el 227 y en el proceso de normalizar y mejorar lo que pueda cada tabla, decidí cambiar el tipo smallint por tinyint pero cuando hago esto, me aparece el mensaje de error _ "1062 - Duplicate entry '127' for key 1"
Yo interpreto que encuentra una clave duplicada en la entrada o registro 127 para la clave 1 definida que casualmente es la clave primaria.
Me fijo en la columna Id entonces y no encuentro ningún valor duplicado así como tampoco en la columna codpais pero sí, descubro que tengo 3 nompais duplicados.
Lo que no entiendo es que si la clave primaria está especificada para la columna 1 (idpais) y el duplicado lo tengo en la columna3 (nompais), me de este error.
Por otra parte el tipo de dato numérico Tinyint posee un rango "con signo" de -128 a +127 y de 0 a 255 (sin signo).
Por qué entonces, obtengo este error?
Ms Gs.
Lo acabo de descubrir de modo tal que lo posteo para otro usuario que le haya pasado lo mismo.
Identificando la columna Idpais como Unsigned se terminó el problema dado que el margen oscila de 0 a 255.
Me confundió que al pegar en un excel una data de internet me quedaba bajo la descripción TINYINT lo sgte.:
-128 127
0 255
Nada más.
Cuando voy a la ayuda de MySQL dice para Unsigned : "impide que los campos numericos acepten signo negativo, es decir, solo se aceptaran enteros positivos."
Interpreté que el 127 sería como si ingresara desde un form como +127 pero no era así, identificando Unsigned, lo solucioné.
En fin, gajes del oficio.
__________________ When all else is lost the future still remains.
Última edición por GatorV; 12/02/2009 a las 15:09 |