Странная проблема с (inet6_aton ()), иногда возвращает null? SQL - MariaDB - PullRequest
0 голосов
/ 03 августа 2020

Может кто-нибудь объяснить, что здесь происходит? Почему строка с именем sara возвращает нуль в IP_address? Это точно такой же код, как и остальные?

эта строка работает отлично:

INSERT INTO Users VALUES ("","Nina", "Bertilsson", "nina-hej@bertilson.test.se", (inet6_aton('46.246.78.163')), now(), "nina", "password");

Но это возвращает NULL для IP_Address с функцией inet6_aton:

INSERT INTO Users VALUES ("","Sara", "Andersson", "andersson@sara.se", (inet6_aton('46.246.65.892')), now(), "sara", "password");

Таблица выглядит следующим образом:

введите описание изображения здесь

Я использую XAAMP с mariaDB.

1 Ответ

0 голосов
/ 03 августа 2020

Вы можете упростить свой вопрос таким образом:

Почему следующий запрос дает результат:

SELECT HEX(inet6_aton('46.246.78.163'));
+----------------------------------+
| HEX(inet6_aton('46.246.78.163')) |
+----------------------------------+
| 2EF64EA3                         |
+----------------------------------+

, а этот нет:

SELECT HEX(inet6_aton('46.246.65.892'));
+----------------------------------+
| HEX(inet6_aton('46.246.65.892')) |
+----------------------------------+
| NULL                             |
+----------------------------------+

Это потому что первый является действительным IPv4-адресом:

SELECT is_ipv4('46.246.78.163');
+--------------------------+
| is_ipv4('46.246.78.163') |
+--------------------------+
|                        1 |
+--------------------------+

, а второй - нет:

SELECT is_ipv4('46.246.65.892');
+--------------------------+
| is_ipv4('46.246.65.892') |
+--------------------------+
|                        0 |
+--------------------------+

Проблема со вторым адресом связана с номером после последней точки - 892. Оно не может превышать 255, но это так.

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