# 1264 Исправлено значение вне диапазона? - PullRequest
1 голос
/ 08 июля 2011

Когда я пытаюсь вставить ниже в мой MySQL

INSERT INTO `rooms` (`id`, `ip`) VALUES ('131213', '-259857341');

Я не могу выполнить следующую ошибку:

Warning: #1264 Out of range value for column 'ip' at row 1

Я осматриваюсь, но не нашел, как это исправить или решить ...

Мое поле без знака int , которое должно отлично работать для этой записи.

В чем проблема и как ее решить?

Я использую int без знака, потому что я хотел хранить ips с помощью inet_ntoa / aton.

EDIT:

Я использую INT без знака, как рекомендуется на веб-сайте MySQL:

Для хранения значений, сгенерированных INET_ATON (), используйте INT UNSIGNED столбец, а не INT, который подписан. Если вы используете подписанный столбец, значения, соответствующие IP-адресам для которого первый октет больше 127 не может быть сохранено правильно. См. Раздел 10.6, «Вне зоны действия и Переполнение ».

http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html

Ответы [ 4 ]

5 голосов
/ 08 июля 2011

Отрицательное число вне диапазона для UNSIGNED INT. Прочитайте документацию для получения полного списка допустимых значений для данного типа данных.

2 голосов
/ 08 июля 2011

Во-первых, по определению нельзя вставить отрицательное число в поле unsigned int. Вместо этого измените поле на int (или, если возможно, используйте неотрицательные числа).

Во-вторых, я думаю, что вы должны удалить одинарные кавычки вокруг вставленного числа, чтобы значение воспринималось как int, а не string.

1 голос
/ 08 июля 2011

Целое число без знака означает, по крайней мере, неотрицательное значение.

Не уверен, что это то, что вам нужно, но вы можете попытаться преобразовать целое число без знака в 4 байта, как это делает ваш ipconverter (http://www.silisoftware.com/tools/ipconverter.php):

INSERT INTO `rooms` (`id`, `ip`) VALUES ('131213', '-259857341' & 0xffffffff);
0 голосов
/ 24 мая 2017

Измените ваше поле INT на BIGINT, и оно будет работать для меня гладко.

...