Индекс


Ссылка на сообщениеhttp://forum-zavtra.org/msg.php?id=1678
Дата сообщенияЧетверг, 4 Апрель 2019 21:06
Авторpavlik
Дата последнего редактированияЧетверг, 4 Апрель 2019 21:16
В ответ наЗаработало, но я ничего не менял
А тебе ничего и не надо было менять
Ибо поменял я. Я же объяснил. Айпи сохранялся в строковой переменной базы данных длиной 24 символа. Что достаточно для IPv4, но в общем случае недостаточно для IPv6. А структуру БД, да и саму базу, я не менял с Артемовских времен - что обеспечило переход на новый софт без потерь.

Поэтому при попытке записи сообщения в БД происходила ошибка - но не всегда, а только когда а)были подключены IPv6, как в твоих установках, и б)строка IPv6 была длинее 24 символов (что, в принципе, норма, но благодаря короткой форме записи таких адресов иногда случается обратное).

Теперь переменные БД, куда пишутся айпи, принимают до 128 знаков. Вот это я и изменил. Это было легко - а вот найти в чем дело, было довольно-таки нетривиально.

Если бы я писал софт с нуля, я бы, конечно, вообще не сохранял айпи в строковую переменную, поскольку это глупо - даже для IPv4 для нее нужно 4х3 знака + 3 точки - 15 байтов, или 120 бит, вместо 32-х. Что уж там говорить об IPv6.