martes, 3 de enero de 2012

Comodin 2147483647 con mysql


Estaba como siempre haciendo mis experimientos y mis trabajillos y al crear mi DB coloque el campo del telefono como un int de 10, todo trabajaba bien, pero cada que insertaba por el Form el numero de telefono y luego listada, me encontraba que siempre me aparecia el mismo numero y no era precisamente el insertado por mi. Debo admitirlo no es divertido ver que todos los user de mi DB tienen un mismo numero de telefono y no es que se inserto en un principio. Dicho numero o comodin (ya sabran porque le digo comodin) es el: 2147483647.


Este comodin es una replica, una queja, una forma muy decente de Mysql de decirnos que los enteros solo pueden llegar hasta ese numero, ese es el tope, y si tratamos de pasarnos, el nos muestra nuestro error insertando su comodin en el campo correspondiente. Como yo quiero que mis datos sean confiables, decidi mirar que podia solucionar y aqui les dejo el resultado de mis pesquisas, como siempre, recuerden lo hago por la consola de mi linux Fed, aunque a partir del segundo comando ya son comandos mysql, recuerden desde la consola, porque perfectamente lo pueden hacer de manera visual con el phpMyAdmin.

Pasos:
  1. ingresamos como super usuario su - ingresen su contraseña y estaran dentro de su consola con permisos de super usuario.
  2. ahora ingresamos a mysql mysql -u root -p ingrese su contraseña, si la tiene sino, solo haga enter.
  3. ingresamos a la base de datos que nos esta mostrando ese comodin use DB
  4. Ahora modificamos o alteramos la tabla para que tenga mas capacidad ALTER TABLE My_Table MODIFY My_Column_with_joker BIGINT;
Ahora si queremos confirmar el cambio ingresen desc My_Table y podran observar que el type de la columna cambio! Espero que les sirva!
Hasta otra ocasion!

1 comentarios:

  1. Y no sale mas apropiado usar varchar?
    Despues de todo, la aplicacion puede limpiar la mantisa ingresada (quitarle espacios, guiones y otros caracteres y validar que sea solo un numero).
    Si le pones varchar(20) es un tamaño mas que apropiado.

    ResponderEliminar