Почему я не получаю сообщение об ошибке установки большей длины типа данных INT в MySQL? - PullRequest
0 голосов
/ 13 декабря 2010

Я немного запутался в длине типов данных в MySql;Я прочитал справочное руководство на http://dev.mysql.com/doc/refman/5.0/en/data-types.html и знаю, что когда я пишу «INT (M)» ...

M указывает максимальную ширину дисплея для целочисленных типов.Для типов с плавающей запятой и с фиксированной запятой M - это общее количество цифр, которое можно сохранить.Для типов строк M - максимальная длина.Максимально допустимое значение M зависит от типа данных.

Затем я добавил в таблицу столбец с типом поля типа INT (10) [not unsigned], и я знаю, что максимальные значенияare -2147483648 / 2147483647

Однако, если я отредактирую его в INT (11), MySQL позволит мне установить большую длину без каких-либо ошибок, хотя длина выходит за пределы диапазона;в этом случае я получу сообщение об ошибке только в том случае, если я установлю значение, большее 2147483647, почему не раньше?

Заранее спасибо,

Макс

Ответы [ 2 ]

1 голос
/ 13 декабря 2010

Значение M не влияет на диапазон номеров, которые вы можете сохранить. Вы можете сохранить те же цифры в INT(1), что и в INT(30). Число влияет только на поведение ZEROFILL .

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>
0 голосов
/ 13 декабря 2010

Я могу только догадываться, но я предполагаю, что настройка ширины дисплея не достаточно умна, чтобы распознать конфликт.Но, учитывая, что ширина экрана - это просто рекомендация для клиентских программ, я бы сказал, что это не обязательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...