Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Error al pasar de smallint a Tinyint

Estas en el tema de Error al pasar de smallint a Tinyint en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/02/2009, 10:51
Avatar de cmarti  
Fecha de Ingreso: noviembre-2003
Ubicación: Buenos Aires - Argentina
Mensajes: 442
Antigüedad: 20 años, 5 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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:01.