Ошибка выбора Mysql с помощью inet_aton

#mysql #ip

#mysql #ip

Вопрос:

в базе данных Mysql у меня есть таблица, в которой я пытаюсь сохранить адреса IPv4. Таблица состоит из 2 столбцов: «_id» (первичный ключ) и целочисленного столбца, в котором я хотел бы сохранить ip-адреса с помощью INET_ATON. Я вставляю запись в таблицу с помощью следующей команды, и она работает без проблем:

 INSERT INTO db_name.table (IPv4) VALUES (INET_ATON('151.20.141.163'))
  

Однако, когда я пытаюсь получить идентификатор IP-адреса, который я сохранил, запрос не возвращает записи.

 SELECT _id FROM db_name.table WHERE IPv4 = INET_ATON('151.20.141.163') 
  

Где я ошибаюсь?

Заранее благодарю вас

Комментарии:

1. INET_ATON() принимает число, а не строку — это не то, что вы ищете!

2. @EugenRieck: нет, для этого требуется строка, см. Руководство

3. Я не могу воспроизвести это поведение с учетом IPv4 INT UNSIGNED , как сказал Станислав.

Ответ №1:

Возможно, проблема в типе вашего поля IPv4. Он должен быть INT БЕЗ ЗНАКА, а не INT (документация Mysql)