почему номер телефона не хранится в целочисленном типе данных?

mysql> desc Student;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| Roll_no | int(11)      | NO   | PRI | NULL    | auto_increment |
| name    | varchar(200) | YES  |     | NULL    |                |
| address | varchar(200) | YES  |     | NULL    |                |
| phone   | int(100)     | YES  |     | NULL    |                |
| age     | int(11)      | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql> insert into Student values(1,'Ram','Delhi',90404444389,18);

ОШИБКА 1264 (22003): значение вне допустимого диапазона для столбца «телефон» в строке 1

почему по ошибке..размер телефона 100 но почему вне диапазона ..

Поскольку телефонные номера, если их рассматривать как числа, выглядят как очень большие числа, большее, чем целое число, может содержать См. раздел 11.1.2 Целочисленные типы (точное значение) — INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT   —  person Bachan Ghatuary    schedule 21.02.2020

Отвечает ли это на ваш вопрос? Как исправить ошибку ‘ Значение вне диапазона скорректировано с учетом ошибки столбца?   —  person Bachan Ghatuary    schedule 21.02.2020

проверьте dev.mysql.com/doc/refman/8.0/en /integer-types.html для значений целочисленного диапазона, я предлагаю вам сделать это varchar вместо этого!   —  person Bachan Ghatuary    schedule 21.02.2020

И еще этот: dev.mysql.com/ doc / refman / 8.0 / en / numeric-type-attributes.html   —  person Bachan Ghatuary    schedule 21.02.2020

Я думаю, вы неправильно поняли значение int (11). Int (11) не означает, что вы можете иметь целое число с одиннадцатью цифрами. В отличие от varachar (200), что означает, что вы можете хранить максимум 200 символов. Фактически, для типа Int число в круглых скобках сообщает вам размер одного целочисленного значения, и в этом случае это означает, что одно значение int хранится в 4 байтах, а номер телефона, который вы используете, намного больше этого. Я бы порекомендовал взять здесь stackoverflow.com/questions/4151259/   —  person Bachan Ghatuary    schedule 21.02.2020

См. также:  Ошибка сборки Anaconda Python Conda, ошибка WindowsError не может найти файл

Помимо проблем с хранением, номер телефона — это не число в смысле количества или чего-то, над чем вы хотите выполнять арифметические операции. Это строка, состоящая из цифр, поэтому в ней сохраняются ведущие нули, и вы можете выполнять с ней строковые операции, например проверять, начинается ли она с определенного кода области.   —  person Bachan Ghatuary    schedule 21.02.2020

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 3
  1. Bachan Ghatuary

    Потому что ваш номер вне диапазона для типа int. Вместо этого вы можете попробовать использовать bigint или сохранить столбец как varchar, что, вероятно, более уместно, как описано здесь.

    См. этот ответ. Тип int всегда хранится в 4 байтах. Я думаю, вы неправильно понимаете, что делает (100), он просто контролирует ширину отображения.

    Подробнее о числовых типах читайте в документации.

  2. Bachan Ghatuary

    Максимальный размер целого числа со знаком в MySQL — 2 147 483 647.

    90404444389 на 88,256,960,742 больше максимального значения.

    Хотя они (обычно! Но не всегда!) Состоят из чисел, номера телефонов не целые. Не храните их в таком виде. VARCHAR гораздо более уместен.

  3. Bachan Ghatuary

    Я просто догадываюсь

    Обычно это происходит из-за того, что номера телефонов очень длинные, а тип int ограничен. Например, 32-битное целое число (как положительное, так и отрицательное значение) может представлять максимальное число 2 * 147 * 483 * 648.

    Таким образом, если номер телефона выглядит как 3 * 000 * 000 * 000, его невозможно прочитать как int32.

    Маленькая точка Никогда не стоит начинать ответ с I am guessing :) person Bachan Ghatuary; 21.02.2020

    Я объясню, почему написал, что предполагаю: в python нет проблем с чтением огромных чисел, потому что он меняет размер в Long, но на другом языке это может быть проблемой. Я не знаю, может ли это быть проблемой в его комбинации платформы / языка :) спасибо за совет, я буду решать его для следующих ответов person Bachan Ghatuary; 21.02.2020

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: