update mysql me guarda 4294967295
Bienvenidos a VerTutoriales, en esta ocasión vamos a darle solución a un problema que aparentemente no tiene lógica… Al realizar una consulta de actualización de un campo donde querÃa realizar un decremento, el valor devuelto en vez de ser de valor = valor – 1, este me daba como resultado 4294967295.
La consulta en cuestión era la siguiente:
“UPDATE productos set existencias = existencias-”.intval($dato['2']).” where ref = ‘”.$dato['0'].”‘”
Curiosamente aunque la consulta está con la sintaxis correcta en algunas ocasiones me devolvÃa el valor máximo del entero existencias 4294967295. Esto al parecer ocurre cuando en nuestra base de datos de MySQL tenemos puesto el atributo unsigned para nuestro entero, diciendo este parámetro que el valor a guardar ha de ser cero o positivo. En mi caso cuando las existencias se quedaban a 0, puesto que no podÃa ser menor de 0 tambien me devolvÃa este valor. Asà que sin mucho sentido cambié el valor del atributo unsigned y lo dejé en blanco y sin más problema el decremento empezó a funcionar correctamente.
Espero que os sirva a los que busquen solución a este problema y si alguien puede aportar alguna información adicional será bienvenida.
Un saludo!
—–Â NOTA —–
Revisando el código, resulta que el decremento era de -2, por eso al pasar de 0 a -1 me guardaba el 4294967295 famoso del integer. Sea como fuere, el problema es que para guardar negativos con un valor entero ha de ser por el parámetro unsigned.



2 Respuestas
Rafa
marzo 31st, 2011 a 7:42 am
1Muchas gracias por su solución, he estado dÃas testeando este error en mi tienda y al final buscando el valor máximo del entero llegue a este post y encontré la dichosa solución. Me habÃa puesto un if con alertas cuando pasaba este caso y todo MUCHAS GRACIAS!!!!!!!!!!!!!!!!!!!!!!!!
VideoTutoriales
marzo 31st, 2011 a 1:13 pm
2Muchas denadas, precisamente cuando me encontré con el problema del entero 4294967295 buscaba el valor, pero solo me aparecÃa como que es el valor entero máximo que puede ser guardado por el tipo, pero no encontré nada al respecto del signo, si es positivo o negativo, vamos, que si es unsigned e intentabas actualizar con update -1 devolvÃa el valor máximo. Por eso me animé a compartirlo, para que otros no se compliquen.
Es raro que quieras actualizar y si proboca un “error” te ponga el valor máximo, creo que eso es lo que nos ha despitado a más de uno ya jeje.
Un saludo!
Insertar al RSS los comentarios de esta entrada
Escribe tu comentario