sorry_i_noob
@sorry_i_noob

Почему когда я в PhpMyAdmin создаю UNSIGNED int, у него по умолчанию (если не указать явно) длина 10, а без UNSIGNED — 11?

Это баг такой или это специально сделано? Можно ли установить на 11? В смысле, не будет ли никаких негативных последствий от этого?
Прикладываю скриншоты. У field_2 я добавил атрибут UNSIGNED. А у id и field_1 этого атрибута нет.
5be36028a8de5029371185.png
После создания видно, что у field_2 длина int 10. А у других столбиков - 11. Хотя я не указывал ее.
5be36030baa94388358382.png
  • Вопрос задан
  • 587 просмотров
Пригласить эксперта
Ответы на вопрос 2
SagePtr
@SagePtr
Еда - это святое
Из документации:
MySQL supports an extension for optionally specifying the display width of integer data types in parentheses following the base keyword for the type. For example, INT(4) specifies an INT with a display width of four digits. This optional display width may be used by applications to display integer values having a width less than the width specified for the column by left-padding them with spaces. (That is, this width is present in the metadata returned with result sets. Whether it is used or not is up to the application.)

Всё логично, в максимальном числе беззнакового типа INT (это чуть больше 4 миллиардов) - 10 символов, потому по дефолту там отводится 10 позиций. В максимальном знаковом - те же 10 + ещё 1 символ на знак (для отрицательных чисел от миллиарда и выше по абсолютной величине, минимальное - минус 2 миллиарда с небольшим), потому и получается 11, как по дефолту. Но ни на что, кроме отображения в консольном клиенте mysql, это не влияет для типа INT и его разновидностей (TINYINT, BIGINT и т.п.). Для других типов (VARCHAR к примеру) - влияет.
Ответ написан
Комментировать
Указывайте длину явно.

spoiler
5be36c716fab5112007739.jpeg-----
5be36c7aa727c772897082.jpeg
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы