【问题标题】:IPv6 - country detectionIPv6 - 国家检测
【发布时间】:2018-09-19 06:44:39
【问题描述】:

我从 Maxmind 下载了一个包含 IPv6 数据的 CSV 文件。我需要将其上传到 MySql 表,然后使用该表通过 IPv6 检测国家/地区。

所以第一个问题是我的 MySQL 表中的 MySql 类型应该是什么 LONGSTARTLONGEND 字段,因为最大 INTEGER 长度可以是 20 而我有 42540488558116655331872044393019998208 数字?

另一个问题是如何构建一个 MySql 查询以便在LONGSTARTLONGEND 之间找到一个 IP 地址?我使用了一个函数(ipv6_numeric($ip)),它将'2001::11ff:ffff:f' IPv6 地址转换为像2540488558116655331872044393019998208 这样的长数字。

感谢您的提前!

【问题讨论】:

  • 你为什么要使用 MySQL?为什么在插入行之前不检测国家,然后同时插入ipv6和国家代码?
  • 你误会了,我打算用一个包含 IP 和国家的表格。
  • 在这种情况下,关于国家的整个事情似乎无关紧要。您在确定国家/地区时没有问题,只是在比较非常大的值时遇到了问题。

标签: mysql ipv6


【解决方案1】:

您可以使用以下简单的 SQL 查询。

SELECT * FROM `geoip2`
WHERE [SEARCH IP NO] <= LONGEND LIMIT 1

【讨论】:

  • 抱歉,这行不通。我的 sql 表中必须有 42540488558116655331872044393019998208 数字
  • 数据库前两列需要 DECIMAL(39,0) UNSIGNED 类型。
  • SELECT * FROM ig0my_geodata_v6 WHERE 42541956123769880606220662448000886044 longstartlongend 之间
  • 太棒了!我从常见问题解答ip2location.com/faqs/db1-ip-country 中找到了大部分信息
  • 谢谢!我去看看。
猜你喜欢
  • 1970-01-01
  • 2012-02-22
  • 2012-01-14
  • 2013-01-03
  • 1970-01-01
  • 2014-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多