Как использовать maxmind GeoLite2 на mysql 5.5, где нет inet6_aton?

Нужно использовать maxmind базу GeoLite2 для определения страны, mysql 5.5. По мануалу https://dev.maxmind.com/geoip/importing-databases/... не получается, т. к. inet6_aton появился только в mysql 5.6. Нужны только IPv4 адреса.
Может быть можно как-то конвертировать получившиеся адреса в необходимый формат для inet_aton (функция без шестерки в названии)? Как? На php.
В результате надо получить таблицу, в которой будут только IPv4 адреса, чтобы можно было использовать запрос
select *
from (
  select *
  from geolite2_network
  where inet_aton('123.4.5.6') >= network_start
  order by network_start desc
  limit 1
) net
where inet_aton('123.4.5.6') <= network_end
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
inet6_aton('fdfe::5a55:d:fefa:9089')
эквивалентно
unhex('FDFE0000000000005A55000DFEFA9089');
То есть, надо привести IPv6-адрес в полную форму и удалить двоеточия.
Ответ написан
Комментировать
@Akina
Сетевой и системный админ, SQL-программист.
В результате надо получить таблицу, в которой будут только IPv4 адреса

Не вижу проблемы. Импорт не использует inet6_aton. Соответственно после импорта можно просто удалить записи с IPv6-адресами. А затем ещё и изменить тип поля на VARBINARY(4).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы