0

I'm a little bit confused on datatypes length in MySql; I read the reference manual at http://dev.mysql.com/doc/refman/5.0/en/data-types.html and I know that when I write "INT(M)"...

M indicates the maximum display width for integer types. For floating-point and fixed-point types, M is the total number of digits that can be stored. For string types, M is the maximum length. The maximum permissible value of M depends on the data type.

Then, I added a column to my table with a field datatype like INT(10) [not unsigned] and I know that the maximum values are -2147483648 / 2147483647

However if I edit it to INT(11), MySQL permit me to set a larger length without any error although the length is out of the range; in this case, I'll get an error only when I set a value larger of 2147483647, why not before?

Thank You in advance,

Max

Max
  • 4,965
  • 17
  • 49
  • 64
  • possible duplicate of [What size INT should I use for my autoincrement ids MySQL](http://stackoverflow.com/questions/3562737/what-size-int-should-i-use-for-my-autoincrement-ids-mysql) – ajreal Dec 13 '10 at 18:00

2 Answers2

1

The M value doesn't affect the range of numbers you can store. You can save the same numbers in INT(1) as in INT(30). The number does only affect the ZEROFILL behavior.

mysql> CREATE TEMPORARY TABLE foobar(x INT(40) ZEROFILL);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO foobar(x) VALUES (42);
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM foobar;
+------------------------------------------+
| x                                        |
+------------------------------------------+
| 0000000000000000000000000000000000000042 |
+------------------------------------------+
1 row in set (0.00 sec)

mysql>
Progman
  • 16,827
  • 6
  • 33
  • 48
0

I can only speculate, but my guess is that the display width setting just isn't smart enough to recognize the conflict. But seeing as the display width is just a recommendation for client programs anyway, I would argue it doesn't have to be.

Pekka
  • 442,112
  • 142
  • 972
  • 1,088