
17/11/2009, 06:58
|
 | 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 | |
Respuesta: unir tablas Ese problema se te produjo porque no has verificado correctamente cual es el valor más alto que había en la tabla, antes de definir cuál es el tipo numérico conveniente.
Evidentemente, todos los valores no nulos superaban el 127, entonces, como el rango de representación de un TINYINT con signo es de -128 a 127, debiste haber usado un MEDIUMINT y no un TINYINT.
En todo caso, si ningún valor superaba el 255, y no tenías valores negativos ni los esperas tener, podrías haber usado un TINYINT UNSIGNED, cuyo rango es 0 a 255.
Ahora bien, como al cambiar el tipo de columna, el valor supera el rango, MySQL le asigna automáticamente el máximo posible para esa columna, el cual es 127.
¿Se entiende el problema?
No hay posibilidad de vuelta atrás en la conversión. Si conservas una copia de la tabla, deberás usarla para recuperar los datos. En caso contrario, deberás reingresarlos.
Por estas y otras razones es que una base de datos no debe modificarse cuando ya está en trabajo; y también por estas razones es que hay que planear bien cuál es el rango de datos necesario y suficiente para definir desde el principio el tipo de columnas correcto, siempre pensando a futuro.
Un cambio estructural en una base trabajando suele producir problemas grandes casi siempre (yo ya he tenido esas experiencias).
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |