powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Отображение IPv4 и IPv6
9 сообщений из 9, страница 1 из 1
Отображение IPv4 и IPv6
    #39703942
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть таблица
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE tan.access (
  t bigint(20) NOT NULL DEFAULT 0,
  ip varbinary(16) DEFAULT NULL,
  n int(11) DEFAULT NULL
)
ENGINE = INNODB,
AVG_ROW_LENGTH = 16384,
CHARACTER SET utf8,
COLLATE utf8_general_ci,
MAX_ROWS = 5;

ALTER TABLE tan.access
ADD UNIQUE INDEX ip (ip);



в неё заносятся данные
Код: sql
1.
2.
 INSERT INTO access (ip, n, t)
    VALUE (IF(IS_IPV6(ip),INET6_ATON(ip), INET_ATON(ip)), 0, 0)



добавляю поле
Код: sql
1.
 ipl varchar(255) GENERATED ALWAYS AS (IF(IS_IPV6(INET6_NTOA(`ip`)), INET6_NTOA(`ip`), INET_NTOA(`ip`))) VIRTUAL


если это поле добавить при наличии данных- отображение идёт правильно
но добавлять данные не дает...
пишет, что не корректный данные для INET6_NTOA(`ip`)
в чём ошибка?
...
Рейтинг: 0 / 0
Отображение IPv4 и IPv6
    #39703947
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадядобавлять данные не дает...
пишет, что не корректный данные для INET6_NTOA(`ip`)
в чём ошибка?В формате добавляемых данных, вероятно... пример исходных данных, приводящих к ошибке посмотреть бы...
...
Рейтинг: 0 / 0
Отображение IPv4 и IPv6
    #39704040
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinaпример исходных данных, приводящих к ошибке посмотреть бы...
Код: sql
1.
2.
INSERT INTO access (ip, n, t)
    VALUE (IF(IS_IPV6(ip),INET6_ATON(ip), INET_ATON(ip)), 0, 0)


вставка идет в процедуре
Код: sql
1.
PROCEDURE test.procedure1(IN ip varchar(32),.....


данные в виде 192.168.0.3 либо 0:0:0:0:0:0:0:1
...
Рейтинг: 0 / 0
Отображение IPv4 и IPv6
    #39704041
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос вижу. Теперь покажите значение поля IP, приводящее к ошибке.
...
Рейтинг: 0 / 0
Отображение IPv4 и IPv6
    #39704054
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ибо

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
mysql> CREATE TABLE access (  t bigint(20) NOT NULL DEFAULT 0,  ip varbinary(16) DEFAULT NULL,  n int(11) DEFAULT NULL)ENGINE = INNODB,AVG_ROW_LENGTH = 16384,CHARACTER SET utf8,COLLATE utf8_general_ci,MAX_ROWS = 5;
Query OK, 0 rows affected, 1 warning (0.38 sec)

mysql> ALTER TABLE access ADD UNIQUE INDEX ip (ip);
Query OK, 0 rows affected (0.56 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> CREATE PROCEDURE procedure1(IN ip varchar(32)) INSERT INTO access (ip, n, t)     VALUE (IF(IS_IPV6(ip),INET6_ATON(ip), INET_ATON(ip)), 0, 0);
Query OK, 0 rows affected (0.28 sec)

mysql> CALL procedure1('192.168.0.3');
Query OK, 1 row affected (0.29 sec)

mysql> CALL procedure1('0:0:0:0:0:0:0:1');
Query OK, 1 row affected (0.07 sec)

mysql> SELECT * FROM access;
+---+------------------+------+
| t | ip               | n    |
+---+------------------+------+
| 0 | 3232235523       |    0 |
| 0 |                 |    0 |
+---+------------------+------+
2 rows in set (0.00 sec)

mysql>

и никаких ошибок...
...
Рейтинг: 0 / 0
Отображение IPv4 и IPv6
    #39704104
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

а теперь добавь в таблицу поле
Код: sql
1.
ipl varchar(255) GENERATED ALWAYS AS (IF(IS_IPV6(INET6_NTOA(`ip`)), INET6_NTOA(`ip`), INET_NTOA(`ip`))) VIRTUAL
...
Рейтинг: 0 / 0
Отображение IPv4 и IPv6
    #39704138
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой тип должен иметь аргумент функции INET6_NTOA? а у функции INET_NTOA? а тип поля у тебя какой?
...
Рейтинг: 0 / 0
Отображение IPv4 и IPv6
    #39704213
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaКакой тип должен иметь аргумент функции INET6_NTOA? а у функции INET_NTOA? а тип поля у тебя какой?мне главное чтоб поле ip было не varchar.
вот это
ipl varchar(255) GENERATED ALWAYS AS (IF(IS_IPV6(INET6_NTOA(`ip`)), INET6_NTOA(`ip`), INET_NTOA(`ip`))) VIRTUAL
работает, если это поле добавить к уже заполненной таблице, и работает правильно , т.е. конвертирует поле ip в текстовое и для ip6 и для ip4
но когда в табл с полем ipl добавляются/изменяются значения в поле ip - не работает....
...
Рейтинг: 0 / 0
Отображение IPv4 и IPv6
    #39704679
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

есть что предложить?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Отображение IPv4 и IPv6
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]