2011-08-03 47 views
26

Tengo una columna que se establece en int(20) cuando intento insertar un número como 622108120237, dice que está fuera de rango. ¿Por qué?Mysql int (11) número fuera de rango

+0

posible duplicado de [¿Cómo puedo solucionar el 'valor fuera de rango ajustado para la columna' error?] (http://stackoverflow.com/questions/1786509/how-do-i-fix-the-out-of-range-value-adjusted-for-column-error) –

Respuesta

38

Un int, con MySQL, se almacena en 4 bytes, y, como tal, sólo puede contener valores entre -2147483648 y 2147483647.

622108120237 es mayor que 2147483647; por lo que no cabe en un int - parece que va a tener que usar un bigint.

Consulte la sección Datatypes - Numeric types de
el manual de MySQL, sobre eso.

+1

¿qué significa el 11 en int (11) significa entonces? – Thyagi

+2

@Thyagi Aquí 11 es solo el ancho de la pantalla de int coloumn – Rams

33

See the MySQL Numeric Type Documentation. Estas cosas están bien documentadas.

El rango para INT firmado es [-2147483648, 2147483647].

Tenga en cuenta que en el caso de INT(x), x es el "ancho de la pantalla" y no tiene nada que ver con los requerimientos de rango o de espacio:

MySQL soporta una extensión para especificar opcionalmente la pantalla ancho de tipos de datos enteros entre paréntesis después de la palabra clave base para el tipo. Por ejemplo, INT (4) especifica una INT con un ancho de visualización de cuatro dígitos ... ancho de visualización no restringe [ni expande] el rango de valores que se pueden almacenar en la columna.

Happy coding.

+3

Me has abierto los ojos: -O ... – Buksy

4

El valor máximo que se puede almacenar en un entero con signo es 2147483647 Y unsigned int es 4294967295 En ambos casos se superan los límites

Cuestiones relacionadas